繁体   English   中英

容器之间的Docker和Nginx proxy_pass

[英]Docker and Nginx proxy_pass between containers

我正在尝试使用Docker,Nginx,Gunicorn和Django运行配置。

目前,我已成功使用以下命令通过Gunicorn和Django应用程序成功运行了我的容器:

docker run --publish 8003:8000 user/app:latest

现在,当我连接到localhost:8003时,我看到我的应用程序正在运行。

此时,我想在容器中设置我的Nginx,以便每当我浏览到localhost/app时都指向此应用localhost/app

我的Nginx.conf文件如下所示:

...
http {
    server {
        listen 80;

        location /app {
        proxy_pass http://127.0.0.1:8003;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
      }
}
...

我用它运行:

docker run --publish 80:80 user/nginx:latest

这行不通,我无法解决这个问题,感谢您提供解决此问题的想法!

nginx内的localhost IP 127.0.0.1仅在内部引用nginx容器。 有两种解决方案:

  1. 简单的事情是在“主机模式网络”模式下运行nginx容器。 至此, 127.0.0.1实际上是指您的容器主机,并且应该都不错。 请参阅文档 ,但基本上只添加--network="host"应该可以。 这种简单性的缺点是它的安全性稍差。

  2. 或者,您可以使用“链接”容器,请在文档中使用--link选项。 这样,您可以从nginx容器内部使用DNS解析来访问其他容器,因此可以将proxy_pass更新为链接名称。 附带说明一下,从docker-compose进行操作使事情变得相当容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM