Go to content Go to menu Go to search

Apache за Nginx по https (Apache behind https reverse proxy)

Имеем Apache+PHP, который находится за Nginx (обратный прокси), и на Nginx терминируется https. Без дополнительных приседаний Apache не будет знать, что запросы пришли по протоколу https, и, соответственно, PHP будет генерировать ссылки на http вместо https.

Есть два способа решения проблемы:

Модуль Apache setenvif

В настройках nginx:

proxy_set_header X-Forwarded-Proto $scheme;

В настройках apache:

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

Модуль rpaf

К сожалению, во всех дистрибутивах только старая версия этого модуля, которая не обладает нужным нам функционалом, по этому нужно ставить из исходников:

Установка в CentOS:

yum install httpd-devel gcc
cd /usr/local/src
wget https://github.com/gnif/mod_rpaf/archive/stable.zip
unzip stable.zip
cd mod_rpaf-stable
make
make install

Установка в Ubuntu:

apt-get install build-essential apache2-dev
cd /usr/local/src
wget https://github.com/gnif/mod_rpaf/archive/stable.zip
unzip stable.zip
cd mod_rpaf-stable
make
make install

Конфигурация:

LoadModule rpaf_module modules/mod_rpaf.so
RPAF_Enable On
RPAF_SetHostName On
RPAF_ProxyIps 192.168.0.1
RPAF_SetHTTPS On

В настройках nginx:

proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;

Enjoy!


при публикации материалов с данного сайта обратная ссылка на сайт обязательна.
valynkin.ru © no rights reserved