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

  • url,修改为实际域名地址
  • port,修改为当前项目的端口,如果同一台服务器上运行多个nodebb应用一定需要各不一样,然后利用nginx做反向代理

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建立索引失败的缘故吧,总之插件引起的问题只能慢慢诊断,在后台把插件停用后测试。

Post Comment