我有一个netty-socketio服务器运行在端口9092上。nginx被配置为侦听端口9093和netty-socketio服务器的代理请求(这两种请求目前都运行在同一台服务器上,但在生产中分离一次)。
如果我直接连接到套接字服务器,一切正常工作,但是当通过nginx连接连接时,每隔一分钟就会拖放和重新连接。
非常简化的客户端示例:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
<script>
var socket = io.connect('http://1.1.1.1:9093');
socket.on('connect', function ()
{
console.log('connected to socket server');
});
socket.on('disconnect', function ()
{
console.log('lost connection to socket server');
});
</script>
</head>
</html>nginx配置:
upstream socketserver {
server 127.0.0.1:9092;
}
server {
listen 9093;
location / {
proxy_pass http://socketserver;
proxy_http_version 1.1;
proxy_pass_header Server;
proxy_pass_header Connection;
proxy_pass_header Date;
}
}我唯一能找到的区别是Connection: Upgrade头在直接连接时用大写字母"U“设置,在使用nginx时设置所有小写(”升级“)。我甚至从源代码中重新编译了nginx,但是大写的"U“并没有什么区别。
任何帮助都将不胜感激。谢谢。
发布于 2015-02-20 14:18:14
在尝试使用60s默认值的指令之后,我发现罪魁祸首是proxy_read_timeout。在server上下文中添加此内容解决了我的问题:
proxy_read_timeout 86400s;有关此指令这里的文档。
发布于 2015-02-19 20:15:24
尝试在上游部分添加一个keepalive。
...
keepalive 60;https://stackoverflow.com/questions/28615875
复制相似问题