ПРОЕКТЫ 


  АРХИВ 


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: How to detect https?



On Thu, 16 Mar 2006, Grigory Batalov wrote:

On Thu, 16 Mar 2006 16:45:41 +0300 (MSK)
Igor Sysoev wrote:

     server {
         listen 80;

         location / {
             fastcgi_pass ...
             fastcgi_param  HTTPS  NO;
         }
     }

     server {
         listen 443;
         ssl    on;

         location / {
             fastcgi_pass ...
             fastcgi_param  HTTPS  YES;
         }
     }

 В этом случае location / просто дублируется. У меня его
 настройки тоже полностью совпадают, поэтому я вынес их
 в файл foo.conf:

     server {
         listen 80;

          include foo.conf;
     }

     server {
         listen 443;
         ssl    on;

          include foo.conf;
     }

 Как теперь в foo.conf добавить проверку HTTPS?

 Нашёл упоминание о нём разве что в Referer:

       set             $https          "off";
       if ($http_referer ~ "^https://";) {
               set     $https          "on";
       }

       fastcgi_param   HTTPS           $https;

 Однако, реферера может не быть, или он сознательно
 ссылается с http-страницы на https- .

Можно так, но будет чуть медленее:

      server {
          listen 80;

          set    $https  NO;
          include foo.conf;
      }

      server {
          listen 443;
          ssl    on;

          set    $https  YES;
          include foo.conf;
      }

foo.conf:
          ...
          fastcgi_param  HTTPS  $https;


Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.