Обратное проксирование Apache 2.4 в Nginx и настоящий IP-адрес клиента в логах Apache

Обратное проксирование Apache 2.4 в Nginx и настоящий IP-адрес клиента в логах Apache

Новости

Сегодня у нас задача настроить обратное проксирование службы Apache с помощью Nginx. Итак приступим.

 

Создаем файл конфигурации Nginx для нашего сайта, который нужно проксировать

vim /etc/nginx/sites-available/conf24.net.conf

 

вот с таким содержимым:

server {
listen   80;
server_name  conf24.net www.conf24.net;
access_log off;

location / {

proxy_pass http://127.0.0.1:81;

proxy_redirect off;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Server-Address  $server_addr;
#          proxy_set_header X-Forwarded-For $remote_addr;

client_max_body_size 10m;
client_body_buffer_size 128k;
client_body_temp_path /tmp;

proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_send_lowat 12000;

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_temp_path /tmp;
}
}

 

Активируем виртуальный хост conf24.net в Nginx:


sudo ln -s /etc/nginx/sites-available/conf24.net /etc/nginx/sites-enabled

 

Создаем файл конфигурации виртуального хоста conf24.net в Apache:


[email protected]:~# vim /etc/apache2/sites-available/conf24.net.conf

 

Создаем файл виртуального хоста conf24.net в Apache cледующего содержимого:

<VirtualHost 127.0.0.1:81>

ServerAdmin [email protected]

DocumentRoot /home/hosting/sites/conf24.net/public_html

ServerName conf24.net
ServerAlias www.conf24.net

<Directory /home/hosting/sites/conf24.net/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
</Directory>

Include /etc/phpmyadmin/apache.conf

ErrorLog "/home/hosting/sites/conf24.net/log/conf24.net-error.log"
CustomLog "/home/hosting/sites/conf24.net/log/conf24.net-access.log" common

</VirtualHost>

 

Активируем виртуальный хост conf24.net в Apache:


sudo a2ensite conf24.net.conf

 

Необходимо активировать и настроить модуль Apache remoteip для того, чтобы он понимал проброс IP-адреса клиента через прокси-сервер Nginx, иначе в логах будет виден адрес клиента 127.0.0.1. Для этого воспользуемся модулем remoteip:


a2enmod remoteip

 

Создадим конфигурацию для модуля remoteip


vim /etc/apache2/conf-available/remoteip.conf

 

вот с таким содержимым:

<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1 213.111.122.3
RemoteIPInternalProxy 127.0.0.1 213.111.122.3
</IfModule>

 

Подправим формат логов в файле /etc/apache2/apache2.conf, заменив %h на %a, к следующему виду:


LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

 

Подправим настройки интерфейсов и портов Apache в файле /etc/apache2/ports.conf, чтобы он работал только на localhost,  к такому виду:

Listen 127.0.0.1:81

<IfModule ssl_module>
Listen 127.0.0.1:8443
</IfModule>

<IfModule mod_gnutls.c>
Listen 127.0.0.1:8443
</IfModule>

 

Для того, чтобы изменения вступили в силу необходимо перезапустить службы:

service nginx restart
service apache2 restart

 

Проверяем:

[email protected]:~# netstat -ntlp | grep apache2
tcp        0      0 127.0.0.1:81            0.0.0.0:*               LISTEN      32413/apache2
tcp        0      0 127.0.0.1:8443          0.0.0.0:*               LISTEN      32413/apache2

[email protected]:~# netstat -ntlp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      32441/nginx -g daem
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      32441/nginx -g daem
tcp6       0      0 :::80                   :::*                    LISTEN      32441/nginx -g daem

 

 

Apache-Nginx-RemoteIp

На этом с поставленой задачей мы справились.

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Новости

Больше похожих постов

1 комментарий. Оставить новый

  • Было бы неплохо детально описать эту часть конфига:

    proxy_pass http://127.0.0.1:81;

    proxy_redirect off;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Server-Address $server_addr;
    # proxy_set_header X-Forwarded-For $remote_addr;

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню