测试环境是在WINDOWS2003,IIS6,NGINX 1.0下.
02 |
proxy_set_header Accept-Encoding "none" ; |
04 |
proxy_set_header Host $host; |
05 |
proxy_set_header X-Real_IP $remote_addr; |
06 |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
07 |
proxy_connect_timeout 120s; |
08 |
proxy_read_timeout 120s; |
09 |
proxy_send_timeout 120s; |
11 |
proxy_pass http://127.0.0.1:8080; |
在测试的时候,如果直接访问,127.0.0.1:80,即访问nginx,就很容易出现错误:
upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream
上面这是NGINX的错误日志.在浏览器上反应就是502,504错误.
但如果在测试的时候,把测试地址改成http://127.0.0.1:8080,即访问IIS,根本不会出现超时什么的.
有人说是IIS脚本执行时间太长,但问题时,使用静态页面也出现同样的问题.就不应该是IIS的问题了.
后来又把同样的程序,放到另外一台2003上运行,把NGINX的代理地址也改了,情况就好多.
为什么直接代理本机却出现一大堆超时错误.不要说把timeout的值改大,那个改大了,浏览器上的反应就是一直在等待.还不如直接输出错误呢.
请问这种问题应该怎么解决呢?
---------------问题补充---------------
@duxer:对了, 还有这个配置 proxy_buffer_size 16k; proxy_buffers 4 16k;
@duxer:请不要说不要使用NGINX,直接使用IIS.现在使用NGINX主要解决的问题是带宽. 服务器带宽和磁盘不够,必须压缩所有页面.使用IIS的话,压缩页面需要占用大量的磁盘空间和CPU,而NGINX却占用很少. 另外再强调一下,代理本机的IIS,就出现这个错误,不是一直出现,访问量大了,就出现.现在把程序布署到另外一台上,代理另外一台,就不会出现这个错误.(2年前)
@duxer:使用AB测试 ab -n 10000 -c 50 测试NGINX,其中failed的有700个左右测试IIS,failed的0
@duxer:使用AB测试 ab -n 10000 -c 50 测试NGINX,其中failed的有700个左右测试IIS,failed的0
(责任编辑:IT)