django - 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
.
有什么建议么?
解决方案
在正常工作之前需要修复两件事。首先,proxy_pass 应该是“http://localhost:38000”,其次,我必须运行 Django 应用程序来收听0:8000
(即python manage.py runserver 0:8000
)。
仅使用runserver
或runserver 0.0.0.0:8000
不允许 NGINX 发送到 docker 容器。
推荐阅读
- python - 动态用户名可以用作 django 中的对象来访问类成员吗?
- highcharts - Highcharts - 如何使图例项宽度为 contianer 的一半?
- swift - 更改应用程序购买价格后应用程序崩溃,但在从 Xcode 调试到设备和模拟器时有效
- forecast - 使用 ARDLmodel 对象进行预测
- python - 在更大的列表中选择随机的不同和不相交的列表
- aws-lambda - 如何将多个独立的 AWS Lambda 函数滚动到单个 SAM 应用程序构建/部署脚本中?
- python-3.x - 如何根据 Pi 列出字母字符?
- apache-kafka - debezium kafka 连接问题
- powershell - 通过 PowerShell 自动将主机名移动到 OU
- c - 为什么调试语句Serial.println(i)时for循环行为会发生变化;存在与注释掉