应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

nginx反向代理,负载均衡

8277人阅读 2019/5/5 20:17 总访问:5182503 评论:2 收藏:0 手机
分类: 软件架构


nginx介绍

 nginx是一个高效的反向代理工具,可以很方便的实现服务的负载均衡

 反向代理方式实际上就是一台负责转发的代理服务器,请求的时候不请求具体的服务器而已请求代理服务器nginx,

 然后nginx负责请求真正的服务器,然后返回给客户端。

也就是请求先到达nginx然后在由nginx负责转发到不同的服务中去,就可以达到不同服务器负载的效果了。

当然由于中间加了一层,相比直接请求服务器其实效率是会受一些影响的。



启动nginx

下载后nginx后解压如图

可以双击nginx.exe运行也可以使用命令行运行

 按住shift然后右键就可以看到:在此处打开命令窗口 快速的定位到nginx的解压位置

 然后运行:start nginx

会一闪而过,如果在进程中找到说明启动成功了

如果在进程中没有找到说明报错了

可以找到错误日志查看,logs里边的error.log


几个常见的错误


  1:10013: An attempt was made to access a socket in a way forbidden by its access permissions

       这个是由于和nginx里边设置的端口冲突了,比如默认的就是80端口被占用了,我这里是和iis的80端口占用,把iis关闭的就好  


  2:1113: No mapping for the Unicode character exists in the target multi-byte code page

        这个是因为中文目录问题,加入到英文目录中就好了



 成功之后访问可以看到

 

 

新建两个WebApi模拟不同服务器


 端口9000 返回value

 

 端口9001 返回value2

 


 配置nginx实现负载均衡

  1:在http节点下,加入upstream节点

  1.   upstream 192.168.0.107
  2.     {
  3.        server 192.168.0.108:8081;
  4.        server 192.168.0.108:8080;
  5.     }

2:在server节点中的location加入proxy_passp配置了,反向代理的地址

      我们请求的地址就是这个

  

 整体配置效果如下:

 

  配置文件修改后使用命令nginx -s reload 重启一下服务

  到此一个简单的负载均衡就实现了

  我们请求的时候就不直接请求webapi的地址而是代理服务器的地址

   

  

除了负载均衡之外我们还可以配置每台服务器的权重比例

  可以根据不同服务器的性能来配置权重

  1.   upstream 192.168.131.125
  2.     {
  3.        server 192.168.131.125:9000 weight=1;
  4.        server 192.168.131.125:9001 weight=2;
  5.     }

 权重越大访问次数就越多,比如这里端口9000的访问次数是1/3,端口9001访问次数是2/3


配置超时时间

  1. location / {
  2.      proxy_set_header X-Real-IP $remote_addr;
  3.      proxy_set_header Host $http_host;
  4.      proxy_pass http://tnblog_phone;
  5.      proxy_connect_timeout 6;#超时时间(秒)
  6. }

 使用proxy_connect_timeout即可

此配置意思是,每个从Nginx分发的请求,连接到后台(服务器1)的连接如果超过6秒,则视为连接失败,Nginx会将此请求分发到另一台服务器。在一段时期内(默认应该是1分钟),后续的请求都不会再发送到(服务器1)了。过了一段时期后再送请求,又有可能把请求发送到(服务器1)。此时,只要超时一次,则在往后一段时间内不再往(服务器1)分发。



nginx 服务器重启命令,关闭

  nginx -s stop     :  关闭命令 

nginx -s reopen  :重新打开日志文件

nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确

nginx -s reload  :修改配置后重新加载生效




但是这样会存在一个单点故障,就是nginx服务器挂了后,集群都不能用了

可以使用dns和nginx配合的负载均衡,去掉单点故障,没有必要都要经过一个服务器转发,直接通过dns把请求转发到不同的服务器上

当然可以是一个nginx服务器


nginx配置负载均衡注意事项:http://www.tnblog.net/aojiancc2/article/details/141

niginx处理静态资源:http://www.tnblog.net/aojiancc2/article/details/2478



欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

饰心

2019/5/6 10:41:07

[阴险]

剑轩:@饰心还有几分钟下班吃饭咯١١(❛ᴗ❛)

2019/5/6 11:42:59 回复

nginx常用命令。nginx启动命令。nginx重启命令。nginx关闭命令。nginx测试配置文件是否正确。nginx nginx.pid文件丢失报错

启动命令:start nginx 关闭命令:nginx -s stop nginx -s quit nginx -s stop与nginx -s quit区别 Quit is a graceful shu...

nginx配置负载均衡注意事项

一.如果location下面的proxy_pass配置有端口号nginx就会直接反向代理到这个地址这样你配置的upstream就没有用了,即使名字和...

使用nginx在同一台服务器上配置多个二级域名

一般二级域名都是解析到不同的服务器上,但是很多时候没有那么土豪可以用那么多服务器哇。当然土豪完全可以1个二级域名一台...

使用nginx在同一台服务器上配置多个二级域名2

在第一篇中介绍了一种方法:http://www.tnblog.net/aojiancc2/article/details/2430其实还可以使用第二种方法,也就是配置...

nginx处理静态资源

如果我们使用了nginx反向代理后,直接去项目中请求我们的静态资源会比较慢,当然我们有条件使用cdn更好,没有不使用cdn,也...

nginx配置注意事项

一.要注意后面要加一个分号:不然就会报这个错:

使用nginx后net core无法获取ip问题

使用了nginx后net core获取ip地址居然全部是本地的地址,不是外网的地址这是因为nginx转发了一次后,我们直接使用常规获取i...

.net Core3.0在Ubuntu 16.04上面的部署(Supervisor+nginx)(扩展docker)

前 言Linux 随着Linux越来越流行,本人一个.net程序员也多次研究linux与.net的相关产品,以及中间件的使用方式。So今天给...

nginx四层负载均衡

实验环境CentOS-7-x86_64-DVD-1810.iso本机IP:10.4.7.11安装Nginx执行安装命令yuminstallnginx-y配置Nginx通过 Vim打开Ngi...

nginx https的证书配置与301跳转

在 etc/nginx/ 目录下新建 ssl 文件夹来存放证书。把 crt 证书文件和 key 私钥文件上传到这里。然后就可以配置 Nginx 配置...

windows nginx配置https证书

windows nginx配置https证书还是比较简单的我这里申请的证书是阿里云的,去下载nginx版本的解压后有两个文件一个.key,一个....

nginx bind() to 0.0.0.0:443 failed

就是因为443端口被占用了而已!,找到占用的端口停掉即可。可以参考:http://www.tnblog.net/aojiancc/article/details/3319

nginx重启无效

有可能是因为nginx打开了多个,在应用程序中看看

nginx 静态资源gzip压缩与缓存,解决静态资源加载慢的问题

在http模块中开启gzip压缩# 开启gzip gzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_lengt...

nginx限制文件上传大小

有些时候用了nginx,除了项目本身要配置上传大小限制,nginx也要限制 直接贴代码吧 location / { proxy_set_header X...