Nginx и принудительный редирект на https?

Собственно, возникла необходимость перенаправлять пользователей одного ресурса принудительно на https в силу некоторой деликатности информации, которая на ресурсе имеется.



Есть в конфиге виртхоста такая шляпа:



location /somewhere {

rewrite ^/(.*) https://$server_name$request_uri? permanent;

}



Учитывая, что для доступа по https уже давно был сконфигурирован отдельный виртхост (отдельным файлом), эти две с половиной строки я просто закинул в виртхост, работающий по 80-му порту, и все отлично получилось, казалось бы.



Косяк заключается в том, что пользователи любят закладки. Если сказать браузеру resource.ru/somewhere, то редирект на защищённое соединение сработает. Если же сказать resource.ru/somewhere/index.php, или показать руками на нужный скрипт, редирект не работает.



Каким бы образом можно было реализовать искомое?



Среда — Squeeze, nginx 1.0.10 и php5-fpm 5.3.8-1 из дотдеба. Остальное, думаю, несущественно.
  • Вопрос задан
  • 6682 просмотра
Решения вопроса 1
Dzuba
@Dzuba
Попробуйте вне location'а так:
server {
	server_name ...;
	rewrite ^(/somewhere/.*)$ https://$host$1 permanent;
	...
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
NeX
@NeX
location ~* ^/somewhere(.*) {
rewrite ^/(.*) https://$server_name$request_uri? permanent;
}
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
rewrite ^/somewhere(.*) https://$server_name/somewhere$1 permanent;

Если вам нужно определенный раздел.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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