连接到上游时没有实时上游 jwilder/ngnix-proxy
No live upstream while connecting to upstream 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是app所在的容器运行。
我想我误解了这些概念并且没有正确配置 nginx 默认 conf 文件。 Jwilder 反向 ngnix 代理是我没有得到的东西。
请帮帮我。我已经阅读了大部分文档,但运气不好..谢谢
我已经展示了此处所需的最少代码。
我发现了导致上游错误的错误。
由于我为 Web 公开端口 8000,我的 Nginx 无法与 Web 容器通信,因为它们不共享同一个网络。
因此,最好从 compose 中删除网络,以便它们可以相互通信,这是容器的默认行为。
文档对我来说不是很清楚,而且这是我的第一次部署 由于没有实时上游,我不断收到错误 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是app所在的容器运行。 我想我误解了这些概念并且没有正确配置 nginx 默认 conf 文件。 Jwilder 反向 ngnix 代理是我没有得到的东西。
请帮帮我。我已经阅读了大部分文档,但运气不好..谢谢
我已经展示了此处所需的最少代码。
我发现了导致上游错误的错误。
由于我为 Web 公开端口 8000,我的 Nginx 无法与 Web 容器通信,因为它们不共享同一个网络。
因此,最好从 compose 中删除网络,以便它们可以相互通信,这是容器的默认行为。