ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Проблема с редиректом http н а https.



Если человек набрал в адресной строке http://domain он
*гарантированно* попадает на фронтенд на 80 порту.
Если человек набрал в адресной строке https://domain он
*гарантированно* попадает на фронтенд на 443 порту.

Фронтенд это то, что снаружи принимает соединения юзеров.

Если вы хотите чтобы http редиректилось на https, то вам надо повесить
свой "фронтенд" с 80 на другой порт и сделать фронтендом вот такой
server {
listen addr;
rewrite ^ https://domain$request_uri permanent;
}

Как после этого юзерам ходить на то, что раньше у вас было на 80 порту
- отдельный разговор. Лучше всего - использовать разные домены.

2009/7/2 LinCore <dvl.lincore@xxxxxxxxx>:
> Преветствую Генадий,
>
> Как в таком случае можно оргонизовать редиерк в случае если человек ошибочно
> набрал в адрессной строке http вместо https?
>
> Но основное условие это чтобы фронтэнд был не на 80 или 443 порту(они заняты
> уже).
>
> 2009/7/1 Gena Makhomed <gmm@xxxxxxxxx>
>>
>> On Tuesday, June 30, 2009 at 18:48:12, LinCore wrote:
>>
>> L> Возникла необходимость сделать ssl бэкэнд с фонтэндом на основе
>> L> nginx, но используя нестандартный порт (например 8081).
>>
>> L> Пример конфигурационого фаила:
>> L> cat nginx.conf
>>
>> L>  server {
>>
>> L>     listen       some_ip:8081;
>>
>> L>     server_name some_name_tld;
>>
>> L>     ssl          on;
>>
>> L>     rewrite ^ https://$server_name:$server_port$request_uri redirect;
>>
>> [...]
>>
>> L> И в такой конфигурации редирект который я использую не работает,
>> L> причем если фронтэнд повесить на 80 порт то всё начинает работать как
>> надо.
>>
>> если в конфигурации написано listen some_ip:8081; ssl on;
>> - то это уже "http over ssl". ничего редиректить не надо.
>>
>> если попробовать обратиться по http-протоколу на https порт,
>> http://example.com:443/ то nginx вернет сообщение об ошибке:
>>
>> ==============================================
>>
>> 400 Bad Request
>>
>> The plain HTTP request was sent to HTTPS port
>>
>> ==============================================
>>
>> поэтому для plain http нужно выделять отдельный порт,
>> например, так: 80 - plain http, 443 - http over ssl.
>>
>> --
>> Best regards,
>>  Gena
>>
>>
>
>


 




Copyright © Lexa Software, 1996-2009.