NGINX工作遇到的问题

早前在WINDOWS和LINUX都使用过NGINX,只是做做代理而已,只要成功也就没管了。来到新公司后所有服务器都是用的WINDOWS(确实惊着我了,后来要求他们必须全部用LINUX),因为程序都已经上线等诸多原因也没办法全部都换成LINUX,慢慢发现了性能和使用的问题。

1.连接数不够用,在nginx的logs/error.log中会有如下错误提示

    maximum number of descriptors supported by select() is 1024

    粗略百度之后修改了worker_connections和worker_rlimit_nofile参数,实测并没有什么用。后来在官网上找到这么一段:

67e231b768ccba40a684d5fec17904a1bfa.jpg

    原来windows版本是不支持高并发的,拿来学习用是可以的。想要做高并发必须得使用LINUX

2.工作进程只有一个

    WINDOWS服务器上NGINX的配置无论是多少个进程,虽然启动后是启动了多个进程,但实际上只有一个进程在工作。关于这一点是我在网上看到后摘抄下来的,并没有验证过。

3.epoll是多路复用是没法使用的

    如题之后,简单的总结就是NGINX不适用在WINDOWS服务器上使用(简单粗暴,欢迎拍砖)。

4.NGINX代理之后重定向地址并不是代理地址,而是真实地址

    使用NGINX代理AUTH2的认证服务器之后,重定向的地址是真实地址,而真实地址是不能被外网访问到的,经过搜索找到的答案是设置如下内容:

        location /nginx01 {
                #该值会影响从请求中获取到的URL部分,URI不会受到影响。通过NGINX代理后获取到的地址可能会是真实地址,但
                #是重定向是无法通过外网直接访问真实端口的,所以需要通过此属性指定其值
                proxy_set_header Host 127.0.0.1:80;
                proxy_pass   http://127.0.0.1:8080;
                #该值会影响从响应中获取URL,默认是NGINX的URL
                #proxy_redirect http://127.0.0.1:8080  http://127.0.0.1:80;
        }

        proxy_set_header 参数可以修改重定向时生成URL

        如图:

6a02da988f66ec7ecf59a0f26a6d87e3430.jpg

        第一行为URL,第二行为URI。可以看出获得的URL并不是http://127.0.0.1:8080而是http://127.0.0.1。这样就可以保证重定向的地址在网络限制的情况下可以被正常的访问了。

        proxy_redirect 参数和本次问题无关,网上说如果不设置该参数,在响应(response)中可以看到真实地址,我使用的NGINX FOR WINDOWS 1.15.5测试并没有出现这个问题,默认都是NGINX服务器的地址。不过设置了该参数是可以改变响应(response)中的URL的

        如图:

        f0f516bffd7c04300bfacc3ac46d2e7799a.jpg

        默认值确实就是NGINX服务器的URL,并没出现网上说的默认会给出真实地址,也许是我NGINX版本问题,这个问题我没有深究。有兴趣的朋友可以试试低版本会不会出现网上说的问题。

转载于:https://my.oschina.net/u/3049601/blog/2698947

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值