nginx静态资源无法访问,curl显示拒绝连接,重启nginx失败
说明
一日,同事将一个管理后台的dist包发给我,说是新项目需要部署在dev环境(172.16.108.13),于是兴冲冲去dev环境下新建了文件夹,包放置后在nginx里面新建了个conf文件,里面新建server和location。结果reload nginx后发现无法访问。 服务器内部curl loaclhost:xxxx显示拒绝连接。


排查
初步以为是/home/xxxx/dist这个文件夹权限问题,chmod -R 777 这个文件夹后发现还是未能解决问题。我以为是reload没成功加载,于是systemctl restart nginx准备彻底重启nginx,结果发现nginx重启失败。于是systemctl status nginx查看报错原因,顺便去了/var/log/nginx/error.log查看报错日志,发现里面有个3000端口号有冲突。

ss -lntup | grep 3000查看发现是docker里面容器占用了这个3000端口号。由于容器重新部署,改端口号稍显麻烦,于是在nginx里面通过”find . -type f -name "*conf" | xargs grep 3000“查看到一个server占用了3000端口,改成了19021。重启nginx,发现nginx正常启动。并且之前部署的静态资源可以正常访问。

后续
静态资源在访问的时候,发现有报错提示框,F12打开发现一个Get请求里面报错,发现Request URL里面的端口号是19021,怀疑应该改成后端程序的端口号。了解到新项目后端程序部署在/home/apps/cms文件夹下,根据查看了解到进程号是26509,通过ps -ef | grep 26509查看到对应进程信息。再通过 ss -lntup | grep 26544查询到端口号。修改后访问正常。



总结
遇到此类问题,要沉着冷静,一步步排查,如果需要修改配置,要做好备份工作。