【问题标题】:Docker and Nginx proxy_pass between containers容器之间的 Docker 和 Nginx proxy_pass
【发布时间】:2017-01-22 01:24:11
【问题描述】:

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

目前,我使用此命令成功地使用 Gunicorn 和 Django 应用程序运行了我的容器:

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

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

此时我想在容器中设置我的 Nginx 以在我浏览到 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

这不起作用,我无法解决这个问题,感谢您提供解决此问题的任何想法!

【问题讨论】:

    标签: django nginx docker proxy gunicorn


    【解决方案1】:

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

    1. 简单的事情就是在“主机模式网络”模式下运行你的 nginx 容器。此时,127.0.0.1 实际上是指您的容器主机,应该没问题。请参阅the docs,但基本上只需添加--network="host" 即可。这种简单性的缺点是安全性稍差。

    2. 或者,您可以使用“链接”容器,请参阅the docs,其中您需要--link 选项。这样,您可以从 nginx 容器内部使用 DNS 解析来访问不同的容器,因此您可以将 proxy_pass 更新为链接名称。作为旁注,从docker-compose 执行此操作会使事情变得容易得多。

    【讨论】:

      猜你喜欢
      • 2023-02-26
      • 2018-07-08
      • 2015-03-17
      • 2015-05-03
      • 2022-01-22
      • 2020-01-28
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      相关资源
      最近更新 更多