Как добавить местоположение nginx обратно в 302 место перенаправления ответа - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть приложение django-cms, работающее за сервером nginx. Я использую proxy_pass для отправки трафика в приложение cms. Я использую location / django-cms, поэтому, когда я перехожу на https://nginxserver/django-cms, он на самом деле работает и отправляет трафик на сервер CMS, однако приложение CMS отправляет ответ 302, и ответ содержит Location: en /, поэтому браузер пытается нажать https://nginxserver/en/ вместо f https://nginxserver/django-cms/en. Это, очевидно, приводит к ошибке 404. Как я могу убедиться, что все, что предназначено для сервера CMS, достигает https://nginxserver/django-cms/?

Вот соответствующий раздел из файла nginx.conf.

location /django-cms {
    auth_request /request_validate;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://10.0.2.29:8000;
}

1 Ответ

0 голосов
/ 22 ноября 2019
location /django-cms {
  proxy_pass http://10.0.2.29:8000;
  proxy_redirect ~^/(.*) scheme://$http_host/django-cms/$1;
}

Инструкция по перенаправлению прокси может помочь вам, вы можете попробовать это? Он добавляет django-cms к любому перенаправлению, которое дает вам бэкэнд (cms).

Я использую его впервые, но, похоже, именно так он и используется в документации по nginx.

(Нашел другой вопрос, который имеет вид той же проблемы, что и у вас:

Перехват перехватов бэкэнда 301/302 (proxy_pass) и перезапись в другой блок местоположения возможен?

Простоесли вы тоже хотите это проверить: D

...