@a000_000a

Исключение localhost из редиректа на https?

В nginx я новичек. Подскажите, пожалуйста, как настроить nginx чтобы происходил редирект с http на https, но при этом редирект не срабатывал, если запрос приходит с localhost (это нужно для мониторинга).
  • Вопрос задан
  • 429 просмотров
Решения вопроса 1
castomi
@castomi
Серверный администратор - tickets.settin.ru
server {
listen 127.0.0.1:80;
...
}

server {
listen 80;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
...
}

Мне тут автор вопроса сказал что код дублировать плохо), ну чтож, вот решение без дублирования)
server {
  listen 80;
  listen 443 ssl;
  set $https "0";
  if ($scheme != "https") { set $https "A"; }
  if ($remote_addr != "127.0.0.1") { set $https "${https}B"; }
  if ($https = "AB") { rewrite ^ https://$http_host$request_uri? permanent; }
  ...
}

А ещё можно сделать вариант с map
map "$scheme:$remote_addr"  $https {
  "https:*"            0;
  "http:127.0.0.1" 0;
  default              1;
}
server {
  listen 80;
  listen 443 ssl;
  if ($https) { rewrite ^ https://$http_host$request_uri? permanent; }
  ...
}


Ещё вариант через include

server {
listen 127.0.0.1:80;
include vhost.conf;
}

server {
listen 80;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
include vhost.conf;
}

Да вариаций на самом деле много))
P.S. ВНИМАНИЕ! Код писался на коленке и на память, проверяйте перед использованием, но думаю цель, а именно показать принцип использования он выполнил.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Wexter
вынести localhost в отдельный location
UPD: я ступил, не location а server
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы