Контейнер Nginx не может подключиться к контейнеру Django с файлом docker-compose
В моем контейнере для nginx выводится следующее сообщение об ошибке.
connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.10.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://192.168.10.2:8000/", host: "127.0.0.1"
.
Я хочу решить эту проблему. В docker-compose определены три сервиса; "dp": PostgreSQL, "web" : Django, и "nginx" :nginx. Эти сервисы соединены в сети.
services:
db:
...some descriptions...
web:
...some descriptions...
ports:
- "8000:8000"
depends_on:
- db
networks:
- backend
- frontend
nginx:
...some descriptions...
ports:
- "80:80"
depends_on:
- web
networks:
- frontend
...some descriptions...
networks:
frontend:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.10.0/24
...some descriptions...
"db" и "web" подключены (так как миграции работали). Однако я не могу создать соединение между "web" и "nginx" через сеть "frontend".
Я обновил конфигурационный файл "etc/nginx/nginx.conf", как показано ниже, и команда "nginx -t" выдала такие комментарии;
nginx: синтаксис конфигурационного файла /etc/nginx/nginx.conf в порядке
nginx: проверка конфигурационного файла /etc/nginx/nginx.conf прошла успешно
Я подозреваю, что причиной ошибки является конфигурационный файл, но я не совсем понимаю его.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
upstream web {
server web:8000;
}
server {
listen 80;
listen [::]:80;
# server_name _;
server_name localhost 127.0.0.1;
root usr/share/nginx/html;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /static/ {
alias /opt/static/;
}
location /media/ {
alias /opt/media/;
}
location / {
try_files $uri @proxy_to_web;
}
location @proxy_to_web {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
# proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://web;
}
}
}
Приложение Django активируется следующей командой. Без nginx оно хорошо работает в среде контейнера docker. Однако nginx не может подключиться к нему.
RUN gunicorn --bind 0.0.0.0:8000 config.settings.wsgi -D