вторник, 6 сентября 2016 г.

PHP on apache and nginx ssl termination

Боль, печаль: https://github.com/joomla/joomla-cms/issues/8970

Если php-приложение интерпретируется apache’ом, находится за реверс-прокси, терминирующим SSL (nging/haproxy), и не может нормально работать (генерировать нормальные url’ы) из-за того что опирается на переменную $_SERVER['HTTPS'], то это можно попробовать исправить выставлением соответствующей переменной окружения. На самом деле беда может быть не только с php-приложением ;)

Кусочек конфига apache, в зависимости от конфигурации и разрешений, можно добавить в .htaccess или конфиг хоста/apache:

LoadModule setenvif_module modules/mod_setenvif.so
<IfModule setenvif_module>
    SetEnvIf X-Forwarded-Proto https HTTPS=on
</IfModule>

Кусок конфига nginx, поместить в секцию с proxy_pass:

proxy_set_header X-Forwarded-Proto $scheme;

Кусок конфига haproxy (не тестировался, на основе документации, ssl_fc):

http-request set-header X-Forwarded-Proto https if { ssl_fc }

Судя по документации, у haproxy есть несколько методов управлять заголовками:

Комментариев нет:

Отправить комментарий