UPDATE
Я обнаружил, что это работает, если я перезапускаю nginx на контейнере с docker exec -it backend_gateway_1 nginx -s reload
. Я нашел некоторую информацию из этого вопроса . Кажется, что подключение к 127.0.0.1, а не к localhost будет работать, однако я использую сети докеров, поэтому я не уверен, какая у меня будет ситуация.
ОРИГИНАЛЬНЫЙ ВОПРОС
Я пытаюсь использовать nginx в качестве обратного прокси-сервера с докером. Я не могу понять, что не так, как иногда, когда это работает, но тогда, если я использую docker-compose down && docker-compose up
, чтобы перезапустить все это, я обычно получаю эту ошибку 504
У меня такое ощущение, что это связано с конфигурацией nginx или docker. Я могу сделать запрос к / штрафу, но любой запрос к / пользователю вызывает временную проблему.
Когда я не получаю 504, приложение узла работает хорошо и создает / возвращает пользователя. Я также могу нормально подключиться к базе данных с помощью mongo-express, так что это должно помочь сузить круг.
докер-compose.yml
version: '3.5'
services:
gateway:
image: nginx:latest
restart: always
ports:
- 8080:80
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/nginx-error.log:/var/log/nginx/error.log
networks:
- poker_network
poker_mongo:
image: mongo:latest
container_name: poker_mongo
restart: unless-stopped
volumes:
- db-data:/data/db
expose:
- "27017"
environment:
MONGO_INITDB_ROOT_USERNAME: test
MONGO_INITDB_ROOT_PASSWORD: 123
networks:
- poker_network
depends_on:
- gateway
poker_user:
container_name: poker_user
build: ./user/
image: poker/user:latest
volumes:
- ./user/:/usr/src/app
#- /usr/src/app/node_modules
expose:
- "8080"
depends_on:
- gateway
- poker_mongo
networks:
- poker_network
environment:
WAIT_HOSTS: poker_mongo:27017
mongo-express:
container_name: mongo-express
image: mongo-express
restart: always
ports:
- 8085:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: test
ME_CONFIG_MONGODB_ADMINPASSWORD: 123
ME_CONFIG_MONGODB_SERVER: poker_mongo
depends_on:
- gateway
- poker_mongo
networks:
- poker_network
networks:
poker_network:
volumes:
db-data:
nginx.conf
events { worker_connections 1024; }
http {
server {
listen 80;
location /user {
rewrite /user/(.*) /$1 break;
proxy_pass http://poker_user:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
location / {
return 200 'hello';
}
}
}
Любая помощь приветствуется, спасибо.