我有一个使用socket.io的nodejs应用程序,该应用程序在端口3000上运行,并试图将nginx设置为其反向代理。我也有一些iptables,我认为它们可能通过不允许连接到nodejs来干扰我的应用程序,但是我无法弄清楚问题出在哪里。当我从另一台计算机连接到我的应用程序时,出现“无法获取/。”
我以为iptables中的第一行允许回送(由于存在同一台机器,这将允许从nginx到nodjs的连接,但也许我错过了吗?如何更改iptables确实允许nginx连接到我的应用程序?
我的iptables过滤器是:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我的nginx配置文件是:
upstream socket_nodes{
server 127.0.0.1:3000;
}
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://socket_nodes;
}
}
然后在我的nodejs index.js中,我有这个供我收听:
var port = 3000;
server.listen(port, function(){
console.log('listening on *:' + port);
});