如何解决配置nginx时网关错误 Django应用程序容器和Gunicorn
我正在使用docker-compose在虚拟机上部署Django应用,并在虚拟机上将Nginx安装为Web服务器。
但是我收到“ 502错误的网关”消息,我认为这是一个网络问题,我认为Nginx无法访问docker容器!但是,当我在Nginx容器中使用相同的配置时,它可以完美地与Django应用配合使用,但是我需要使用已安装的配置而不是与docker配合使用。
这是我的docker-compose文件:
version: "3.2"
services:
web:
image: ngrorra/newsapp:1.0.2
restart: always
ports:
- "8000:8000"
volumes:
- type: volume
source: django-static
target: /code/static
- type: volume
source: django-media
target: /code/media
environment:
- "DEBUG_MODE=False"
- "DB_HOST=…”
- "DB_PORT=5432"
- "DB_NAME=db_1”
- "DB_USERNAME=username1111"
volumes:
django-static:
django-media:
这是我的nginx.conf文件:
upstream web_app {
server web:8000;
}
server {
listen 80;
location /static/ {
autoindex on;
alias /code/static/;
}
location /media/ {
autoindex on;
alias /code/media/;
}
location / {
proxy_pass http://web_app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
#For favicon
location /favicon.ico {
alias /code/assets/favicon.ico;
}
# Error pages
error_page 404 /404.html;
location = /404.html {
root /code/templates/;
}
}
有人知道是什么问题吗? 谢谢!
解决方法
如上所述,使用“ web”作为主机名将不起作用,您可以尝试使用localhost或docker ip(例如,可以在Ubuntu中使用ifconfig来获取它)。
对于网络问题,我认为您可以使用docker network create创建一个新的docker外部网络,并将其添加到“网络”中[compose内部定义](https://docs.docker.com/compose/networking/#use-a-pre-existing-network)。另一种可能性是使用host as network
当我使用Nginx运行docker aplication时,通常我首先创建一个具有定义IP的外部docker网络(使用某些docker network IP-通常172.xxx),然后将Nginx容器添加到docker-compose.yaml和我的服务器在nginx.conf中是这样的:
getServers
工作正常。希望对您有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。