Проблема с перенаправлением Auth0/Nginx/Django после входа в систему с помощью прокси-сервера Nginx
Я использую nginx в качестве прокси для передачи моему контейнеру django app. Я могу успешно получить доступ к главному url, но когда он передает управление обратно к django app и логинится в django app контейнер дает ему локальный url и он не маршрутизирует обратно на правильную страницу.
Ури редиректа приходит как http://app
site-enabled
upstream app{
server 0.0.0.0:8888;
}
server {
listen 8080;
server_name app-dev.company.net;
location / {
# django running in uWSGI
proxy_pass http://app;
include uwsgi_params;
uwsgi_read_timeout 300s;
client_max_body_size 320m;
sendfile on;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
proxy_send_timeout 1800;
send_timeout 1800;
}
}
docker-compose.yml
version: "3.9"
services:
app:
image: ecr/app
container_name: django_app
ports:
- 8888
env_file:
- dev.env
volumes:
- staticfiles:/opt/app/static/
nginx:
build: ./nginx
container_name: django_app
volumes:
- staticfiles:/opt/app/static/
ports:
- 8080:8080
depends_on:
- app
volumes:
staticfiles:
Ваш конфигурационный файл docker-compose / nginx полон мелких ошибок, которые могут вызвать подобную проблему - поэтому попробуем их устранить.
удалите имена контейнеров, если они не нужны. Так будет легче понять, как сделать ссылку из одного контейнера в другом.
Где находится ваш NGINX Dockerfile, который нужно сделать
build ./nginx
.
docker-compose
version: "3.9"
services:
app:
image: ecr/app
ports:
- 8888
env_file:
- dev.env
volumes:
- staticfiles:/opt/app/static/
nginx:
build: ./nginx
volumes:
- staticfiles:/opt/app/static/
ports:
- 8080:8080
depends_on:
- app
volumes:
staticfiles:
NGINX Configuration
Вы не можете использовать
0.0.0.0
в вашем блоке upstream. Обычно я использую имя сервиса. В вашем случаеapp
. Поэтому, пожалуйста, измените его наserver app:8888;
и протестируйте еще раз.Конфигурация местоположения
Вы проксируете http-трафик на ваш контейнер django app. Нет необходимости использовать uwsgi_read_timeout
или include uwsgi_params
. В вашем случае будет достаточно простой конфигурации http-прокси. Например, во всем том, что вы произвольно добавили в конфигурацию nginx, отсутствует одна важная конфигурация прокси.
proxy_pass http://django_app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
Убедитесь, что вы понимаете директивы, которые вы используете в конфигурации NGINX, а также в файле docker-compose, очистите файлы конфигурации и попробуйте снова.