How to detect https?

Igor Sysoev is at rambler-co.ru
Thu Mar 16 17:28:25 MSK 2006


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





More information about the nginx-ru mailing list