2014-06-27 94 views
48

我使用Nginx的为需要的请求,然后做了proxy_pass摆脱端口8001Nginx的反向代理造成504网关超时

运行如果我去mywebsite上游服务器的实际Web应用程序反向代理。 com或做一个wget,60秒后我得到一个504网关超时...但是,如果我加载mywebsite.com:8001,应用程序按预期加载!

因此,一些被禁止的nginx与上游服务器进行通信......

这一切开始后,我的托管公司复位机我的东西是上运行,在此之前,没有任何问题都没有。

这里是我的虚拟主机服务块:

server { 

     listen 80; 
     server_name mywebsite.com; 

     root /home/user/public_html/mywebsite.com/public; 

     access_log /home/user/public_html/mywebsite.com/log/access.log upstreamlog; 
     error_log /home/user/public_html/mywebsite.com/log/error.log; 

     location/{ 

        proxy_pass http://xxx.xxx.xxx.xxx:8001; 
        proxy_redirect off; 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

        } 

     } 

从我的Nginx的错误日志输出:

2014年6月27日13时10分58秒[错误] 31406#0 :* 1上行超时(110:连接超时),连接上行时,客户端:xxx.xx.xxx.xxx,服务器:mywebsite.com,请求:“GET/HTTP/1.1”,上行:“http://xxx.xxx.xxx.xxx:8001/”,主机:“mywebsite.com”

+0

服务器运行SELinux吗? – CrackerJack9

回答

86

大概可以再增加几行增加到上游的超时时间。下面集的例子超时为300秒:

proxy_connect_timeout  300; 
proxy_send_timeout   300; 
proxy_read_timeout   300; 
send_timeout    300; 
+0

我认为增加超时很少是答案,除非您知道您的网络/服务将始终或在某些情况下会非常缓慢地响应。现在几乎没有网络请求应该需要几秒钟,除非你正在下载内容(文件/图像) – Almund

+0

@Almund我以为同样的事情(几乎没有打扰尝试这个),但无论出于什么原因,这只是为我工作。 (先前在60秒后超时,现在立即得到响应)。 –

+0

@Dax Fohl:这很好奇。我拉下了源代码并快速浏览了一下,从我能看到的情况来看,设置proxy_pass的任何proxy_设置将会初始化一系列设置,我认为这些设置将以不同的方式运行代理,所以也许设置任何东西都会给出相同的设置行为。 – Almund

20

增加超时将不太可能解决你的问题,因为,就像你说的,实际的目标Web服务器响应就好了。

我有这个相同的问题,我发现它与在连接上不使用保持活动有关。我不能真正回答这是为什么,但是,在清除连接头我解决了这个问题,并请求被代理就好:

server { 
    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Host  $http_host; 
     proxy_http_version 1.1; 
     proxy_set_header Connection ""; 
     proxy_pass http://localhost:5000; 
    } 
} 

看一看这个帖子这也解释了它的详细信息: nginx close upstream connection after request Keep-alive header clarification http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive

+0

这是个好的答案 – yzT

+1

单线问题解决了几个月的问题proxy_set_header连接“”;'大声笑,不要使用runcloud – nodws