我遇到了一个问题。
我有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个请求后,它大约半小时或一个小时就无法工作
非常感谢您的帮助。
答案 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/;
}
}