我试图使用Docker,Nginx,Gunicorn和Django运行配置。
目前,我成功地使用此命令设法使用Gunicorn和Django app运行我的容器:
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
这不起作用,我无法解决这个问题,感谢任何想法如何解决这个问题!
答案 0 :(得分:1)
nginx中的localhost IP 127.0.0.1
仅在内部引用nginx容器。对此有几种解决方案:
简单的方法是在“主机模式网络”模式下运行nginx容器。此时,127.0.0.1
实际上是指您的容器主机,它应该都是好的。请参阅the docs,但基本上只需添加--network="host"
即可。这种简单性的缺点是它的安全性稍差。
或者,您可以使用“关联”容器,请参阅the docs您想要--link
选项的位置。这样,从nginx容器内部,您可以使用DNS解析来访问其他容器,因此您将proxy_pass
更新为链接名称。作为旁注,从docker-compose执行此操作会使事情变得相当容易。