真的服了,折腾Nginx反向代理折腾了三天,最后发现是个特别蠢的问题。分享出来给兄弟们避个雷。 事情是这样的,我有个服务跑在8080端口,想用Nginx做个反向代理,把80端口的请求转发过去。配置写得很简单,listen 80,location / 里面proxy_pass http://127.0.0.1:8080。 结果死活不生效,访问80端口直接502。查日志发现upstream连接被拒绝,但我在服务器上curl 127.0.0.1:8080又是通的。这就很诡异了。 后来各种排查,防火墙、SELinux都关了,还是不行。最后灵机一动,用netstat看了一眼,发现Nginx进程居然是以一个低权限用户跑的,而那个用户对8080端口没有访问权限。 解决办法也简单,在nginx.conf里加一行user root;或者把worker进程的用户改成能访问那个端口的用户。重启Nginx,问题解决。 哎,这种权限问题真的太隐蔽了,日志里就显示连接被拒,谁能想到是用户权限的问题。写出来给大伙提个醒,遇到类似情况先检查一下运行用户。有遇到同样坑的吗?