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
>>
>>
>
>
|