nginx有时会响应504/502网关超时错误

时间:2019-04-10 14:10:41

标签: node.js nginx server nginx-reverse-proxy

我遇到了一个问题。

我有6个Express应用程序在Node上运行,并使用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个请求后,它大约半小时或一个小时就无法工作

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在使用ssl监听443,必须指定证书/密钥:

server {
    listen 443 ssl;
    server_name www.example.com;

    ssl_certificate     /var/lib/nginx/ssl/serverssl.crt;
    ssl_certificate_key /var/lib/nginx/ssl/serverssl.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header Host example.com;
        proxy_pass http://localhost:8192/;
    }
 }