首页 > 解决方案 > Nginx 代理服务器到另一个代理服务器网关超时

问题描述

这是我第一次在部署环境中部署应用程序,所以我是一个完整的初学者,我在一个实例上有一个 nginx 代理服务器(称为 server1),它的 IP 暴露在互联网上,它将请求路由到另一个服务器上托管我的 Django 应用程序的不同实例(称为 server2),server1的 conf 文件如下所示:

`server{
    server_name _;
    location / {
            proxy_pass_header Authorization;
            proxy_pass http://10.156.0.4:80;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_set_header Connection “”;
            proxy_buffering off;
            client_max_body_size 0;
            proxy_read_timeout 36000s;
            proxy_redirect off;
    }

    listen 443 ssl;
    listen [::]:443 ssl;
    include snippets/self-signed.conf;
    include snippets/ssl-params.conf; }
server{
    listen 80;
    listen [::]:80;
    server_name _;

    return 302 https://35.246.244.220;}

和第二台服务器:

server{
    listen 80;
    listen [::]:80;
    server_name _;

    location / {
            proxy_pass_header Authorization;
            proxy_pass http://10.156.0.4:8880;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_set_header Connection “”;
            proxy_buffering off;
            client_max_body_size 0;
            proxy_read_timeout 36000s;
            proxy_redirect off;
    }
    location /static/ {
             alias /opt/app/mydjangoapp/staticfiles/;
             autoindex off; }
    }

我正在使用此命令运行我的 django 应用程序,并且在运行该应用程序之前python manage.py runserver 0.0.0.0:8880我也这样做了。collectstatic

当我直接在 server1 中编辑 proxy_pass 时一切正常,http://10.156.0.4:8880但我需要第二个 nginx 服务器,这样我就可以为我的应用程序提供静态文件。

我觉得我在这里做的事情显然是错误的,但对于我的生活,我无法弄清楚。

标签: djangonginxnginx-reverse-proxynginx-config

解决方案


我发现了问题所在,这两个实例之间有一条防火墙规则,不允许从端口 80 进出,只允许从端口 8880 进出。完全没有想到这一点!


推荐阅读