Re: Переменная $https
    Валентин Бартенев 
    vbart at nginx.com
       
    Mon Aug  5 17:52:12 UTC 2013
    
    
  
On Monday 05 August 2013 21:15:21 Nick Knutov wrote:
> В нгинх -
> 
> $https
>  “on” если соединение работает в режиме SSL, либо пустая строка
> 
> А вот в апаче -
> 
> HTTPS
> Will contain the text "on" if the connection is using SSL/TLS, or "off"
> otherwise.
> 
> Вопрос - почему в нгинх сделано так, правильно ли это и не стоит ли
> поменять поведение этой переменной на как в апаче?
Предназначение этой переменной - служить конфигурацией по умолчанию для
fastcgi, и других *cgi протоколов.
Вы же, по-видимому, цитируете документацию по mod_rewrite.  Для подобных
задач в nginx всегда была переменная $scheme, гораздо более удобная на
мой взгляд, чем апачевская HTTPS.
Переменная $https появилась не так давно, тогда данный вопрос был тщательно 
изучен, и была выбрана реализация, совместимая с максимальным количеством 
приложений.
В частности, в документации по PHP написано:
 'HTTPS'
    Set to a non-empty value if the script was queried through the
    HTTPS protocol. 
  @ http://php.net/manual/en/reserved.variables.server.php
и не малое количество PHP кода написано так, что любое непустое значение
в $_SERVER['HTTPS'] включая 'off' будет истолковано как положительное.
Собственно одной из причин появления этой переменной послужили такие
письма: http://mailman.nginx.org/pipermail/nginx/2011-September/029424.html
Когда речь заходит о переменной окружения HTTPS (а не переменной HTTPS в
модуле mod_rewrite), то Apache в этом месте ведет себя так:
Apache + PHP
   Apache/2.2.21
   mod_php 5.3.8
   https: HTTPS == "on"
   http:  HTTPS отсутствует
Apache + mod_fastcgi + flup (Python)
   Apache/2.2.21
   mod_fastcgi 2.4.7
   flup-1.0.2
   https: HTTPS == "on"
   http:  HTTPS отсутствует
Делайте выводы.
--
Валентин Бартенев
http://nginx.org/en/donation.html
    
    
Подробная информация о списке рассылки nginx-ru