Назад | Перейти на главную страницу

Как перенаправить с https на http в определенном блоке местоположения nginx для URL-адреса

этот вопрос не дублирует это ссылка на сайт

Мое приложение создано в сети и разработано на django, развернуто через сервер приложений UWSGI с nginx в качестве обратного прокси. Задача - перенаправить с https к http для определенного URL-адреса, но этот звук для меня не проще, поскольку я пытался справиться со следующей конфигурацией nginx:

Конфигурация прокси по умолчанию:

proxy_redirect      off;
proxy_set_header    Host                $host;
proxy_set_header    X-Real-IP           $remote_addr;
proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
proxy_set_header    X-Forwarded-Host    $host;
proxy_set_header    X-Forwarded-Server  $host;
proxy_set_header    X-Forwarded-Proto   $scheme;

Блок местоположения, в котором возникла проблема, выглядит следующим образом:

    location ~ /target\.xml$ {
        if ($scheme = https) {
           return 302 http://$host$request_uri;
        }
    }

URL-адрес, который нам нужно перенаправить, выглядит следующим образом:

**https://test-server.com/api/stage/7uibsiub3jbh3v3h/target.xml**

Здесь, если URL-адрес содержит target.xml и находится на схеме https, тогда он должен быть перенаправлен на http, но мы получали цикл перенаправления в блоке из-за отсутствия если условие в месте. Как только мы добавили условие if для проверки схемы, nginx дал нам 404 Not Found ошибка. У меня была двойная перекрестная проверка с документацией nginx, в которой мне было сказано не использовать условие if, поскольку в большинстве случаев оно может быть злом, поэтому я придерживаюсь местоположения, но не могу его отлаживать больше.

Заранее спасибо.