gpt4 book ai didi

django - docker容器之间的端口转发

转载 作者:行者123 更新时间:2023-12-02 21:11:50 27 4
gpt4 key购买 nike

我运行一个 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/用户名/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。我认为它必须连接到 http://127.0.0.1:8080通过这些 nginx.conf 行:
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 容器中出现了一些错误。

我在哪里做错了?我该如何解决?

最佳答案

每个容器都有自己的环回接口(interface),它自己的 127.0.0.1。与之交谈将在内部与容器交谈,而不是与您发布端口的主机交谈。在容器之间,您可以通过将它们放在同一个用户创建的 docker 网络上进行通信,并使用容器名称、id 或别名来引用容器。具有 v2 或 v3 语法的 compose 文件会自动执行此操作,因此我建议朝这个方向发展。

sudo docker network create nginxnet

sudo docker run --net nginxnet --name some-nginx -d -p 8030:8030 --rm -v /home/username/nginx_test/nginx.conf:/etc/nginx/nginx.conf:ro nginx:1.15.8alpine

sudo docker run --net nginxnet --name some-nginx -d -p 8080:8080 --rm some/django:0.1

使用此配置:
server {
listen 8030;
set $port_endpoint http://some-nginx: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;
}
}

关于django - docker容器之间的端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54033596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com