我遇到了一个问题。
我在Node上运行了6个Express应用程序,并使用Nginx作为反向代理,所有这些应用程序都运行了几个月没有问题。但最近,当我试图导航到任何网站的内页时,它返回给我502或504 nginx错误。
当我尝试在ngrok或本地运行应用程序时,它们可以正常工作,但在生产服务器上,我得到了504/502错误。
Nginx日志显示2019/04/10 16:38:12 [error] 1362#1362: *245 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 37.9.113.120, server: my.server, request: "GET /videos/videoId HTTP/1.1", upstream: "http://127.0.0.1:3000/videos/videoId", host: "www.my.host"
我尝试增加超时次数
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
字符串
但它没有帮助(
这是我的服务器配置。
server {
listen x.x.x.x:443 http2;
ssl on;
server_name www.myservername.com;
...(ssl conf here)
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
型
我在StackOverflow上挖掘了类似的主题,但没有找到解决方案。最奇怪的事情,在这种情况下,是,一段时间后,内页是可用的,但在我做加载测试,并发送约100个请求的生产服务器上,它停止工作约半小时
提前感谢你的帮助。
2条答案
按热度按时间mwkjh3gx1#
您正在使用ssl侦听443,您必须指定您的证书/密钥:
字符串
2lpgd9682#
与原文没有直接关系,我遇到了类似的问题。在我的情况下,问题出在我的Express应用程序的控制器上。我的原始代码看起来像这样:
字符串
此函数不发送任何响应体。它在本地工作得很好,因为没有涉及Nginx,而且这个端点只用于从前端接收数据进行分析。
然而,当我试图从我的前端应用程序向托管具有Nginx代理的控制器的VM发出真实的的请求时,我会得到502或504错误。
我通过在发送响应时添加响应体来解决这个问题:
型