HTTPS @ NGINX. Небольшие самодельные грабли.

Наткнулся на небольшие грабли в nginx при установке https. В целом, сказанное здесь относится не только к nginx, но и к любому серверу занимающемуся терминацией SSL (TLS) и кешированием динамического контента.

Кеш NGINX, как и любой кеш, представляет собой key-value базу данных. NGINX при поступлении запроса ищет в нем нужный ресурс используя в качестве ключа хеш от неких параметров, указанных директивой proxy_cache_key.

По умолчанию она принимает следующее значение:
proxy_cache_key $scheme$proxy_host$request_uri;
Чем меньше переменных в ней указано, тем (незначительно) выше производительность, поэтому есть соблазн удалить первую переменную ($scheme — схема URL, принимает значения «http://» или «https://»).

Continue reading «HTTPS @ NGINX. Небольшие самодельные грабли.»

Почему нельзя делать редирект на https в .htaccess

В сети можно найти множество советов добавить в файлик .htaccess строки вида:

RewriteEngine On 
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]

и, якобы пользователь зашедший на сайт по http будет автоматом перекидываться на защищенную SSL-ем версию сайта.

Но на практике это все выливается в бесконечный редирект всех посетителей (и http и https) на всех страницах.

Почему так происходит?

Continue reading «Почему нельзя делать редирект на https в .htaccess»