当前位置: > Linux服务器 > nginx >

nginx 使用反向代理功能,代理本机后端IIS,很容易出现502,504错误

时间:2014-05-15 01:24来源:linux.it.net.cn 作者:it

测试环境是在WINDOWS2003,IIS6,NGINX 1.0下.

view source
 
print?
01 location ~/ {
02    proxy_set_header Accept-Encoding "none"
03    proxy_redirect off;
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;
10    proxy_buffering off;
11    proxy_pass http://127.0.0.1:8080;
12 }
在测试的时候,如果直接访问,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)
------分隔线----------------------------
栏目列表
推荐内容