【发布时间】:2019-05-30 17:02:27
【问题描述】:
我运行一个 nginx 容器sudo docker run --name some-nginx -d -p 8030:8030 --rm -v /home/username/nginx_test/nginx.conf:/etc/nginx/nginx.conf:ro nginx:1.15.8alpine
/home/username/nginx_test/nginx.conf:
user nginx;
worker_processes auto;
error_log /dev/null;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Gzip Settings and client, log settings
##
server {
listen 8030;
set $port_endpoint http://127.0.0.1:8080;
location / {
proxy_pass $port_endpoint;
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_set_header X-NginX-Proxy true;
proxy_redirect off;
}
}
}
在http://127.0.0.1:8080,有django项目docker容器。
它按类型运行:sudo docker run --name some-nginx -d -p 8080:8080 --rm some/django:0.1,和
它有 uwsgi 文件:
[uwsgi]
chdir = /smaple_django
wsgi-file = /smaple_django/smaple_django/wsgi.py
master = true
processes = 10
http = :8080
vacuum = true
max-requests = 1000
harakiri = 10
enable-threads = true
lazy-apps = true
single-interpreter = true
它单独运行良好,因此我的浏览器位于http://127.0.0.1:8080(django 容器),它显示了 django 的首页。
但是当我在浏览器中转到http://127.0.0.1:8030 时,它在 nginx 上显示 502 bad gateway。我认为它必须通过这些 nginx.conf 行连接到http://127.0.0.1:8080:
server {
listen 8030;
set $port_endpoint http://127.0.0.1:8080;
location / {
proxy_pass $port_endpoint;
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_set_header X-NginX-Proxy true;
proxy_redirect off;
}
}
好像是nginx容器和django容器有一些不好的slip。
我在哪里做错了?我该如何解决?
【问题讨论】:
-
在您的 nginx 容器配置中,您应该使用其主机名而不是您的 localhost ip (127.0.0.1) 来引用另一个容器,这不起作用。
sudo docker run --name some-nginx -d -p 8080:8080 --rm some/django:0.1也在这里,您可能是想让名称有所不同?