Рейтинг:4

Попросите nginx перенаправить все на https, кроме одного каталога.

флаг ru

Мне нужно, чтобы nginx перенаправлял все URL-адреса http на https, за исключением каталога «.secret/», который должен продолжать использоваться как http.

Так, например:

  • http://example.com/a.html --> https://example.com/a.html
  • http://example.org/z/b.html --> https://example.org/z/b.html
  • http://example.com/.secret/x.html --> http://example.com/.secret/x.html

В моей конфигурации есть следующее, но для http он возвращает адреса, содержащие «_».

сервер {
    слушать 80;
 
    имя сервера _;
 
    местоположение /.secret {
        вернуть http://$server_name$request_uri;
    }
 
    место расположения / {
        вернуть 301 https://$server_name$request_uri;
    }
}

Что я делаю не так?

ОБНОВИТЬ:

Объединив комментарии от @mforsetti и @Pothi_Kalimuthu, получилось следующее:

сервер {
    слушать 80;
 
    имя сервера _;
 
    местоположение /.secret { }
 
    место расположения / {
        вернуть 301 https://$host$request_uri;
    }
}
флаг sv
Добро пожаловать в ServerFault. Вы можете оставить поле `.secret` пустым для желаемого ответа, например `location /.secret {}`.
Рейтинг:5
флаг tz

он возвращает адреса, которые включают "_".

имя сервера _;

местоположение /.secret {
   вернуть http://$server_name$request_uri;
}

$ имя_сервера возвращает назначенный имя сервера к сервер блок, который в вашем случае _; следовательно _ по возвращенному адресу.

Если вы хотите, чтобы он возвращал имя хоста или ваш Хозяин заголовок запроса, попробуйте использовать $хост, что-то вроде:

местоположение /.secret {
    вернуть http://$host$request_uri;
}

.секрет/ каталог, который должен продолжать использоваться как http

если вы хотите обслуживать каталог, укажите корень каталог.

местоположение /.secret {
    корень /путь/к/вашему/родительскому/секретному/каталогу;
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.