我正在使用docker-compose在一个安装了Nginx作为web服务器的虚拟机上部署Django应用程序。
但是我收到了“502 Bad gateway”,我相信这是一个网络问题,我认为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/;
}
}有人知道问题出在哪里吗?谢谢!
发布于 2020-08-21 09:09:29
如上所述,使用"web“作为主机名将不起作用,您可以尝试使用localhost或docker ip (例如,您可以在Ubuntu中使用ifconfig获得它)。
对于网络问题,我认为您可以使用docker network create并添加到您的“网络”definition inside compose中来创建一个新的docker外部网络。另一种可能是使用host as network
当我使用Nginx运行docker应用程序时,通常我首先使用定义的IP创建一个外部docker网络(使用某个docker网络IP -通常是172.x.x.x),然后将一个Nginx容器添加到我的docker-compose.yaml中,我在nginx.conf中的服务器是这样的:
upstream web_app {
server 172.x.x.x:8000;
}
.
.
.它工作起来没有任何问题。希望这能对你有所帮助。
https://stackoverflow.com/questions/63514392
复制相似问题