5

我试图在我的 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;
}
4

3 回答 3

12

proxy_pass 也有类似的问题,如果你的 Linux 服务器使用 SELINUX,那么你可能想试试这个。

$ setsebool -P httpd_can_network_connect true

参考沃伦的回答:https ://unix.stackexchange.com/questions/196907/proxy-nginx-shows-a-bad-gateway-error

于 2017-04-05T16:27:04.490 回答
1

502当您的上游无法访问时发送。

尝试打开error log,您可能会看到failed to connect to upstream,为此您需要检查您的upstream服务器是否正在运行sudo service upstream status,然后尝试打开它。

于 2016-08-27T16:54:28.950 回答
0

Nginx 代理与 unix 套接字故障排除:

  1. 检查 nginx 配置文件:
nginx -t
  1. 检查插座:
netstat --protocol=unix -nlp | grep alpasso-wsgi.socket
  1. 检查应用程序是否正常工作:
curl --unix-socket /tmp/alpasso-wsgi.sock http:/your-path-on-app

(必须是屏幕输出上的 html 代码)

  1. 如果没有,请检查您的应用程序。如果是:

  2. 检查nginx错误日志

sudo tail -f /var/log/nginx/error.log
  1. 如果您收到 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
  1. 我认为,ACL 对安全性更好。因为您只授予 nginx 一个文件的权限,而不是属于组的所有文件。
于 2021-05-24T10:17:15.200 回答