【问题标题】:upstream timed out error in nginx+socket.io+proxy+sslnginx+socket.io+proxy+ssl 中的上游超时错误
【发布时间】:2015-06-16 18:04:45
【问题描述】:

我想我几乎没有主意了。一直在尝试其他答案和所有博客文章的所有解决方案,但仍然不走运。

这就是我想要做的。我有在某个端口上运行 socket.io 的 nodejs 服务器,并希望通过 nginx 从端口 80 进行代理传递。条件是我的应用程序仍然可以工作,并通过 socket.io 成功发送了请求,而另一个客户端收到了它。但问题是我不断收到“上游超时”错误,而且有很多。

这是我当前的 nginx 设置,经过大量更改:

upstream node_server.com {
  server 127.0.0.1:3002 max_fails=0 fail_timeout=10s;
  keepalive 512;
}

server {
  listen 443;

  client_max_body_size 16M;
  keepalive_timeout 10;

  ssl on;
  ssl_certificate my.crt;
  ssl_certificate_key my.key;
  ssl_session_timeout 5m;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
  ssl_prefer_server_ciphers on;

  server_name my_domain.com;


  location / {

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_buffers 8 32k;
    proxy_buffer_size 64k;

    proxy_pass https://node_server.com;
    proxy_redirect off;

    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    tcp_nodelay on; # not necessary
  }
}

这是我收到的错误消息(有很多):

[error] 8131#0: *4599 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 112.215.64.131, server: my_domain.com, request: "GET /socket.io/?EIO=3&sid=ZRsV9eAnEItl90-vAH-j&transport=polling&user=2104655266f3db0f2a HTTP/1.1", upstream: "https://127.0.0.1:3002/socket.io/?EIO=3&sid=ZRsV9eAnEItl90-vAH-j&transport=polling&user=2104655266f3db0f2a", host: "my_domain.com"

即使我的应用程序现在仍然可以运行,我想摆脱所有错误。 非常感谢任何帮助。

【问题讨论】:

  • 仅供参考:我已经尝试过这个解决方案stackoverflow.com/questions/10375659/… 仍然没有运气:(
  • 您是否正在使用 Varnish?还要检查this issue,您的proxy_redirect 可能会在您的配置中被覆盖。
  • 我没有使用 Varnish。而且我已经在 /etc 目录中使用 sudo grep -r proxy_redirect * 检查,发现我只使用了 proxy_redirect
  • @GemaMegantara 我在这里看到了同样的问题,我们都使用相同的堆栈。我无法在我的实验室/流浪环境中重现它,只能在生产中看到它。你找到解决办法了吗?

标签: node.js ssl nginx socket.io reverse-proxy


【解决方案1】:

改一下

proxy_pass https://node_server.com;proxy_pass http://node_server.com;

你应该访问:

https://my_domain.com

`

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2019-03-10
    • 2018-08-17
    相关资源
    最近更新 更多