ПРОЕКТЫ 


  АРХИВ 


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: поведение ssl on/off в разны х server{}



On Wed, Mar 23, 2011 at 11:04:54AM +0300, umask wrote:
> Письмо случайно ушло :(
> 
> 
> Повторю всё с начало и полность.
> 
> натолкнулся на проблему с SSL и никак не могу понять от чего это происходит.
> 
> Есть вот такая конфигурация
> 
> ====================8<=======================
> http {
>         server {
>                 listen 80 default;
>                 listen 443 ssl default;
>                 server_name _;
> 
>                 ssl                  off;
>                 ssl_certificate      example.pem;
>                 ssl_certificate_key  example.key;
> 
>                 location / {
>                         rewrite . http://example.ru/ redirect;
>                         break;
>                 }
>         }
> 
>         server {
>                 listen       80;
>                 listen       443 ssl;
>                 server_name  example.ru;
>                 ssl                  on;
>                 ssl_certificate      example.pem;
>                 ssl_certificate_key  example.key;
>                 location / {
>                         return 500;
>                 }
>         }
> }
> ====================8<=======================
> 
> которая успешно работает и выполняет свою цель - если кто-то пришёл на наш IP 
> (не по host'у) или прописал на какое-то левое DNS-имя наш IP-адрес, то nginx 
> должен редиректить на домен example.ru. Причём не важно пришли ли к нам по 
> HTTP или HTTPS (да, будет проблема с невалидным сертификатом, но пока для нас 
> этот момент незначим).
> 
> 
> 
> 
> В свою очередь конфигурация (ssl on в первом server{}):
> 
> ====================8<=======================
> http {
>         server {
>                 listen 80 default;
>                 listen 443 ssl default;
>                 server_name _;
> 
>                 ssl                  on; # 
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>                 ssl_certificate      example.pem;
>                 ssl_certificate_key  example.key;
> 
>                 location / {
>                         rewrite . http://example.ru/ redirect;
>                         break;
>                 }
>         }
> 
>         server {
>                 listen       80;
>                 listen       443 ssl;
>                 server_name  example.ru;
>                 ssl                  on;
>                 ssl_certificate      example.pem;
>                 ssl_certificate_key  example.key;
>                 location / {
>                         return 500;
>                 }
>         }
> }
> ====================8<=======================
> 
> Перестаёт работать ожидаемым образом и происходит следующее (при запросе 
> http://pupkin.ru/, pupkin.ru прописан в hosts):
> 2011/03/23 07:56:53 [info] 90517#0: *15 client sent plain HTTP request to 
> HTTPS port while reading client request headers, client: 10.0.32.11, server: 
> _, request: "GET / HTTP/1.1", host: "pupkin.ru"
> 
> При запросе https://pupkin.ru происходит следующее:
> 
> 2011/03/23 08:01:04 [notice] 90517#0: *30 "." matches "/", client: 
> 10.0.32.11, server: _, request: "GET / HTTP/1.1", host: "pupkin.ru"
> 2011/03/23 08:01:04 [notice] 90517#0: *30 rewritten redirect: 
> "http://example.ru/";, client: 10.0.32.11, server: _, request: "GET / 
> HTTP/1.1", host: "pupkin.ru"
> 2011/03/23 08:01:04 [info] 90517#0: *31 client sent plain HTTP request to 
> HTTPS port while reading client request headers, client: 82.179.192.158, 
> server: example.ru, request: "GET / HTTP/1.1", host: "example.ru".
> 
> 
> 
> 
> Возникает вопрос. Как работает ssl on/off, если в server{} заданы listen 80 и 
> listen 80 ssl.

"ssl on" включает HTTPS для всех портов в данном сервере.
А поскольку порты более приоритетны, чем сервера, то и для
всех остальных серверов, где используются эти порты.


-- 
Igor Sysoev
http://sysoev.ru/en/

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.