Магазин / аукцион / FPR / donate / услуги / RSS / распечатать / вход 
Мой мир
Вконтакте
Одноклассники
Google+

[20 октября 2018 | 30 октября 2018]

Apache в качестве proxy http

Потребовалось в одном проекте прокинуть HTTP-трафик на внутренний сайт фирмы. Наружу смотрел Apache, а какой был внутри не суть важно, какое-то приложение с web-интерфейсом. Конечно у данной задачи есть масса решений. Люди работающие в данной сфере чаще всего предлагают решение с Nginx на периметре и он в свою очередь отдаёт трафик от нескольких web-серверов наружу. Так же на роутере можно прокинуть трафик с изменённым портом. Например, вместо 80 порта использовать 81 или 8080.

Но я не стал портить имеющуюся инфраструктуру и воспользовался наименее болезненным вариантом. И так, для того чтобы пробросить трафик на внутренний ресурс необходимо активировать прокси-модуль для Apache. Это делается в терминале операционной системы:

sudo a2enmod proxy
sudo a2enmod proxy_html
sudo a2enmod proxy_connect
sudo a2enmod proxy_http
sudo a2enmod proxy_http2
sudo service apache2 restart

Я сначала думал, что достаточно будет только одного прокси-модуля, но как показала практика необходимо запускать целую династию этих проксей. Без этого при редиректах или подключениях с разных версий браузеров возникали ошибки номер 404 или 500. А в логах сыпалось, что необходимо воспользоваться LoadModule.

Идём дальше. Теперь необходимо создать виртуальный хост который будет перенаправлять запрос на другой физический сервер. В моём случае, на другой сервер расположеный в локальной сети. Мой хост выглядел вот так.

<VirtualHost *:80>
    ServerAdmin name@domain.local
    DocumentRoot /var/www/html
    ServerName stat.orcinus.ru
    ErrorLog /var/log/apache2/stat_error_log
    CustomLog /var/log/apache2/stat_access_log combined
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia full
    ProxyPass / http://192.168.130.3:8080/
    ProxyPassReverse / http://192.168.130.3:8080/
</VirtualHost>

Поля ServerAdmin и DocumentRoot обязательны для заполнения и их игнорировать нельзя. По этому туда надо хоть что-то записать. Не забывайте, что в DNS должен существовать хост ServerName и он должен указывать на сервер на котором запущен Apache.

И так параметры, которые я использовал:

Если вы хотите организовать обратный прокси-сервер к сайтам внутри вашей сети с нуля, то я бы рекомендовал использовать для этих целей сервер Nginx. Используя его вы сможете организовать кэширование, балансировку и много иных приятных плюшек касающихся ваших web-серверов.

Успехов в администрировании.

• Перейти в архив


Комментарии

Включите JavaScript для комментирования.


Этот сайт использует файлы cookies, чтобы упростить вашу навигацию по сайту, предлагать только интересную информацию и упростить заполнение форм. Я предполагаю, что, если вы продолжаете использовать мой сайт, то вы согласны с использованием мной файлов cookies. Вы в любое время можете удалить и/или запретить их использование изменив настройки своего интернет-браузера.

Сообщайте мне о замеченных ошибках на: web@orcinus.ru. Все пожелания и советы будут учтены при дальнейшем проектировании сайта. Я готов сотрудничать со всеми желающими. В некоторых случаях, мнение автора может не совпадать с мнением автора! Phone: +7-902-924-70-49.

Рейтинг@Mail.ru LiveInternet Rambler's Top100 Яндекс.Метрика