我将设置一个Nginx反向代理到一个包括Socket.IO的NodeJS应用程序,该服务器还托管其他NodeJs应用程序。
NodeJS通过PM2在3001端口上运行。以下是Nginx配置:
当直接通过服务器的IP地址运行应用程序
据我所知,问题必须与Ngnix反向代理以及WebSockets如何被路由有关。似乎服务器对ping请求的回复没有传输到客户端。但我无法确定原因。非常感谢任何帮助。
NodeJS通过PM2在3001端口上运行。以下是Nginx配置:
server {
listen 80;
server_name iptv-staging.northpoint.org;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
当直接通过服务器的IP地址运行应用程序
http://xxx.xxx.xxx.xxx:3001/
时,一切都能正常运行。Socket.IO的Ping/Pong请求大约为50毫秒(默认pingTimeout为5000毫秒)。但是,当通过其DNS名称http://iptv-staging.northpoint.org
访问该应用程序时,客户端报告了一个ping超时并断开连接。第一次尝试重新连接后,它会再次在第一次ping/pong请求时断开连接。据我所知,问题必须与Ngnix反向代理以及WebSockets如何被路由有关。似乎服务器对ping请求的回复没有传输到客户端。但我无法确定原因。非常感谢任何帮助。