如何解决 Nginx “proxy_pass 502 Bad Gateway”错误
Posted
技术标签:
【中文标题】如何解决 Nginx “proxy_pass 502 Bad Gateway”错误【英文标题】:How to resolve Nginx "proxy_pass 502 Bad Gateway" error 【发布时间】:2017-01-04 03:12:09 【问题描述】:我试图在我的 nginx.conf 文件中添加 proxy_set_header。当我尝试添加 proxy_pass 并调用 URL 时,它会抛出 502 Bad Gateway nginx/1.11.1 错误。
不确定如何解决此错误:
upstream app-server
# connect to this socket
server unix:///tmp/alpasso-wsgi.sock; # for a file socket
server
server_name <name>;
listen 80 default_server;
# Redirect http to https
rewrite ^(.*) https://$host$1 permanent;
server
server_name <name>;
listen 443 ssl default_server;
recursive_error_pages on;
location /azure
proxy_pass http://app-server;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_client_certificate /etc/nginx/server.crt;
ssl_verify_client optional;
【问题讨论】:
nginx 错误日志是怎么说的? 为此,错误日志文件中没有显示错误消息。 【参考方案1】:proxy_pass 也有类似问题,如果你的 Linux 服务器使用 SELINUX,那么你可能想试试这个。
$ setsebool -P httpd_can_network_connect true
参考沃伦的回答:https://unix.stackexchange.com/questions/196907/proxy-nginx-shows-a-bad-gateway-error
【讨论】:
【参考方案2】:502
在您的上游无法访问时发送。
尝试打开error log
,你可能会看到failed to connect to upstream
,
为此,您需要检查您的upstream
服务器是否正在运行,sudo service upstream status
,并尝试将其打开。
【讨论】:
【参考方案3】:Nginx 代理与 unix 套接字故障排除:
-
检查 nginx 配置:
nginx -t
-
检查套接字:
netstat --protocol=unix -nlp | grep alpasso-wsgi.socket
-
检查应用是否正常工作:
curl --unix-socket /tmp/alpasso-wsgi.sock http:/your-path-on-app
(必须是屏幕输出的html代码)
如果没有,请检查您的应用。如果是:
查看 nginx 错误日志
sudo tail -f /var/log/nginx/error.log
-
如果出现 nginx 权限错误,请检查套接字的 nginx 用户权限:
确定 nginx 使用哪个用户名:
ps aux | grep nginx
例如,如果 nginx 用户是 www-data,则授予 www-data 用户所需的权限。将 www-data 用户添加到所需的组:
sudo usermod -a -G your-socket-file-group www-data
并检查套接字文件的权限, 或使用 ACL:
sudo setfacl -R -m u:www-data:rwX /path-to-your-unix-socket
sudo setfacl -Rd -m u:www-data:rwX /path-to-your-unix-socket
-
我认为,ACL 的安全性更好。因为您只授予 nginx 一个文件的权限,而不是属于组的所有文件。
【讨论】:
以上是关于如何解决 Nginx “proxy_pass 502 Bad Gateway”错误的主要内容,如果未能解决你的问题,请参考以下文章
Nginx 假如reload或reopen时发生错误如何解决
如何解决 Nginx “proxy_pass 502 Bad Gateway”错误