问题描述
在服务器使用 pm2 nodejs进程工具启动express服务器,在浏览器使用get请求时出现:
502 Bad Gateway
在服务器终端使用curl 模拟本地请求请求被拒绝
curl: (7) Failed to connect to localhost :Connection refused
转发端口检查
Nginx服务器配置是否绑定Express服务的端口.
检查 nginx 配置,可以看到nginx转发本地端口为8765。
列出连接端口列表
netstat -nptl
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::3000 :::* LISTEN -
可以看到列表中没有目标8765端口。
于是检查Express的配置文件发现Express绑定端口与Nginx的不符,执行修改。
// vim /home/express/bin/www
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '8765');
app.set('port', port);
/**
* Create HTTP server.
*/
请求恢复正常 。
其他nginx配置 ⚠️
server {
listen 0.0.0.0:80;
server_name localhost;
access_log /var/log/nginx/nodetest.log;
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_pass http://node/;
proxy_redirect off;
}
}
upstream node {
server 127.0.0.1:8080;
}
修改完成之后 nginx -s reload || service nginx restart
# proxy_pass http://node/;
proxy_pass http://node;