How to detect https?

Andrew Kopeyko kaa at ramtel.ru
Thu Mar 16 17:42:21 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?

А вы вынесите в include-файл только параметры fastcgi

       server {
           listen 80;
           location / {
               include foo.conf;
               fastcgi_param  HTTPS  NO;
           }
       }

       server {
           listen 443;
           ssl    on;
           location / {
               include foo.conf;
               fastcgi_param  HTTPS  YES;
           }
       }

foo.conf
       fastcgi_pass ...


>  Нашёл упоминание о нём разве что в Referer:
>
>        set             $https          "off";
>        if ($http_referer ~ "^https://") {
>                set     $https          "on";
>        }
>
>        fastcgi_param   HTTPS           $https;
>
>  Однако, реферера может не быть, или он сознательно
>  ссылается с http-страницы на https- .

referrer штука хорошая, но доверять ему нельзя - что пользователь туда 
напишет, то вы и получите.


-- 
Best regards,
Andrew Kopeyko <kaa at ramtel.ru>


More information about the nginx-ru mailing list