首页 > 解决方案 > AWS w/nginx 重定向到 docker 容器;网关 502 变坏

问题描述

设置是一个 RHEL AWS 实例。在这种情况下,nginx 已安装并正在运行。这意味着如果我去 http://[root] 我会像我应该的那样在 nginx 文件夹中获得 html。如果我去 http://[root]/[sub1] 我也会像我应该的那样在 nginx 文件夹中获得另一个 html。

现在,http://[root]/[sub2] 是 docker 容器中的 django 服务器。运行服务器时,django 应用程序正在侦听http://127.0.0.1:8000。我的 docker 容器通过 docker-compose.yml 翻译:38000->:8000。我的 nginx.conf 文件如下所示:

server {
    listen 80;
    root /usr/share/nginx/html;

    location / {}

    location /test {
        index text.html;
        alias /usr/share/nginx/html;
    }

    location /mod {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:38000;
    }
}

虽然 root 和 /test (sub1) 位置有效,但每当我转到 /mod (sub2) 时,我都会收到 502 Bad Gateway。

我的 docker-compose.yml(版本 2)包含ports: 38000:8000. 当我创建容器时,我使用docker-compose run --name mod mod.

有什么建议么?

标签: djangoamazon-web-servicesdockernginx

解决方案


在正常工作之前需要修复两件事。首先,proxy_pass 应该是“http://localhost:38000”,其次,我必须运行 Django 应用程序来收听0:8000(即python manage.py runserver 0:8000)。

仅使用runserverrunserver 0.0.0.0:8000不允许 NGINX 发送到 docker 容器。


推荐阅读