python - 连接到上游 jwilder/ngnix-proxy 时没有实时上游
问题描述
我不清楚文档,这是我的第一次部署,由于没有实时上游,我一直收到错误为 502。
这是代码。
docker.staging.yml
version: '3.8'
networks:
public_network:
name: public_network
driver: bridge
services:
web:
build:
context: .
dockerfile: Dockerfile.prod
command: gunicorn djangotango.wsgi:application --bind 0.0.0.0:8000
volumes:
# - .:/home/app/web/
- static_volume:/home/app/web/static
- media_volume:/home/app/web/media
expose:
- 8000
env_file:
- ./.env.staging
db:
image: postgres:12.0-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- ./.env.staging.db
depends_on:
- web
nginx-proxy:
build: ./nginx
restart: always
ports:
- 443:443
- 80:80
volumes:
- static_volume:/home/app/web/static
- media_volume:/home/app/web/media
- certs:/etc/nginx/certs
- html:/usr/share/nginx/html
- vhost:/etc/nginx/vhost.d
- /var/run/docker.sock:/tmp/docker.sock:ro
depends_on:
- web
networks:
- public_network
nginx-proxy-letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
env_file:
- .env.staging.proxy-companion
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- certs:/etc/nginx/certs
- html:/usr/share/nginx/html
- vhost:/etc/nginx/vhost.d
depends_on:
- nginx-proxy
networks:
- public_network
volumes:
postgres_data:
pgadmin-data:
static_volume:
media_volume:
certs:
html:
vhost:
.env.staging.db
VIRTUAL_HOST=djangotango.meghaggarwal.com
VIRTUAL_PORT=8000
LETSENCRYPT_HOST=djangotango.meghaggarwal.com
ngnix Docekrfile
FROM jwilder/nginx-proxy
COPY vhost.d/default /etc/nginx/vhost.d/default
COPY custom.conf /etc/nginx/conf.d/custom.conf
ngnix->vhost.d->default
upstream djangotango {
server web:8000;
}
server {
listen 80;
listen 443;
server_name djangotango.meghaggarwal.com
location / {
proxy_pass http://djangotango;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location /static/ {
alias /home/app/web/static/;
add_header Access-Control-Allow-Origin *;
}
location /media/ {
alias /home/app/web/media/;
add_header Access-Control-Allow-Origin *;
}
}
custom.conf
client_max_body_size 10M;
这里我的 web 是运行应用程序的容器。我想我误解了这些概念并且没有正确配置nginx默认conf文件。Jwilder 反向 ngnix 代理是我不明白的。
请帮帮我。我已经浏览了大多数文档,但没有运气..谢谢
我已经展示了此处所需的最少代码。
解决方案
我发现了导致上游错误的错误。
由于我为 web 公开端口 8000,我的 nginx 无法与 web 容器通信,因为它们没有共享同一个网络。
因此,最好将网络从 compose 中删除,以便它们可以相互通信,这是容器的默认行为。
推荐阅读
- java - 我对 WebFlux 的行为有疑问
- laravel - 如何通过模型关系从三个相关表中获取数据?
- android - 在房间数据库中保存瞬态字段
- django - ValueError:视图 videos.views.add_comment_post 未返回 HttpResponse 对象。它在 Django 中返回 None
- html - 单选按钮和相关标签未对齐
- compression - 哪些解压算法可以安全地用于攻击者提供的缓冲区?
- flutter - Flutter Web:如何发送不记名令牌?
- terraform - Terraform Cloud 工作空间结构
- ios - 如何在 iOS 上访问 GitHub 桌面 Web 视图
- react-native - 不变违规:运行 react-native 应用程序时未注册“main”