jsand
@jsand
Don`t know what to say.

Как настроить redirect на HTTPS в Nginx для всех кроме некоторых URI?

Добрый день.
Помогите пожалуйста корректно прописать rewrite.
Я делаю 301 редирект с http на https. Однако, мне нужно исключить следующие вещи из редиректа:

site.ru/monitoring
site.ru/automatic
site.ru/status/jnlp.php?id=789

На первые два URI приходят POST запросы, последний просто должен открываться по HTTP.

Возможно, стоит разделить
location / {
}
location = /monitoring {
}
location = /automatic {
}
location = /status {
location ~ \.php$ {}
}

Подскажите, пожалуйста, куда копать, в правильном ли направлении думаю?
  • Вопрос задан
  • 796 просмотров
Пригласить эксперта
Ответы на вопрос 2
LNShadow
@LNShadow
Crazy DevOps Engineer
Best practics является создание отдельного server {} только для http, который занимается редиректом на http.

Для исключения по uri стоит использовать map:

map $uri $need_redirect {
    "/monitoring"  0;
    "/automatic"  0;
    "~^/status/.*"  0;
    default    1;
}


server {
    server_name www.example.com;
    access_log      off;
    error_log       /dev/null crit;

    if ($need_redirect){
       rewrite  ^/(.*)$  https://$server_name/$1  permanent;
    }
}
Ответ написан
Комментировать
jsand
@jsand Автор вопроса
Don`t know what to say.
Спасибо за ваш ответ.
Возможно, у вас опечатка.
"Best practics является создание отдельного server {} только для http, который занимается редиректом на http."
Тут имеется ввиду
".....который занимается редиректом на httpS" ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы