NodeBB+Nginx+CloudFlare+socket.io发贴出错:502 bad gateway
nginx的log中提示
[error] 1346990#1346990: *4401 connect() failed (111: Connection refused) while connecting to upstream, client:
很好理解,大多数情况引起这类错误的问题无非就是端口不通的问题,在NodeBB中无非就是检查这几个地方:
1,项目根目录中文件 config.json
2,Nginx端
检查配置文件中的proxy_pass http://127.0.0.1:4566;
注意后面的端口,应该和上面config.json
中的port
一致。
3,使用nodebb启动服务
在命令行中切换到nodebb的目录中,使用./nodebb start/stop/restart
来管理项目,而不是使用第三方例如pm2等工具来管理项目
4,防火墙的设置
ubuntu中可以使用ss -ltpn
来检查当前端口监听状态,服务启动后列表中会出现该端口和应用的监听情况
ss -ltpn State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 127.0.0.1:6010 0.0.0.0:* users:(("sshd",pid=1124479,fd=10)) LISTEN 0 128 127.0.0.1:6011 0.0.0.0:* users:(("sshd",pid=1344167,fd=10)) LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=1346990,fd=6),("nginx",pid=1346989,fd=6),("nginx",pid=10827,fd=6)) LISTEN 0 4096 127.0.0.1:27017 0.0.0.0:* users:(("mongod",pid=982,fd=11)) LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1346990,fd=7),("nginx",pid=1346989,fd=7),("nginx",pid=10827,fd=7)) LISTEN 0 1024 127.0.0.1:7700 0.0.0.0:* users:(("meilisearch",pid=684,fd=16)) LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=609,fd=13)) LISTEN 0 511 0.0.0.0:4566 0.0.0.0:* users:(("node",pid=1347453,fd=31)) LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=699,fd=3)) LISTEN 0 511 0.0.0.0:4567 0.0.0.0:* users:(("node",pid=1343651,fd=30)) LISTEN 0 128 [::1]:6010 [::]:* users:(("sshd",pid=1124479,fd=9)) LISTEN 0 128 [::1]:6011 [::]:* users:(("sshd",pid=1344167,fd=9)) LISTEN 0 511 [::]:443 [::]:* users:(("nginx",pid=1346990,fd=9),("nginx",pid=1346989,fd=9),("nginx",pid=10827,fd=9)) LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=1346990,fd=8),("nginx",pid=1346989,fd=8),("nginx",pid=10827,fd=8)) LISTEN 0 1024 [::1]:7700 [::]:* users:(("meilisearch",pid=684,fd=15)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=699,fd=4))
使用ufw status
命令来检查当前端口情况
ufw status Status: active To Action From -- ------ ---- Nginx Full ALLOW Anywhere 4567 ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 22 ALLOW Anywhere 22/tcp ALLOW Anywhere 465 ALLOW Anywhere 4566 ALLOW Anywhere Nginx Full (v6) ALLOW Anywhere (v6) 4567 (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6) 22 (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6) 465 (v6) ALLOW Anywhere (v6) 4566 (v6) ALLOW Anywhere (v6)
如果端口没有添加到防火墙规则中则需要使用命令ufw allow 4566
来完成,最后别忘记重启服务ufw reload
。
5,CDN引起的问题
Cloudflare目前支持socket.io,但是根据过往的情况来看,也有cdn配置不当引起的请求错误,这里不再赘述。
6,插件引起的问题
笔者遇到了插件引起的问题,由于安装了meilisearch插件,且在后台未配置参数,结果发帖的时候就出现502错误,但是实际帖子又是成功被发送的,大概是因为meilisearch建立索引失败的缘故吧,总之插件引起的问题只能慢慢诊断,在后台把插件停用后测试。