Home » Полезные советы » Проксирование сайта с помощью apache proxy

Проксирование сайта с помощью apache proxy

Возникла не стандартная ситуация, когда мне нужно было обращения на веб сервер перенаправить на другой. Ситуация такая возникла из-за того, что в локальной сети на одно доменное имя было назначено несколько сервисов, в том числе сайт, а располагались эти сервисы на разных серверах. Для сайта проще всего было сделать проксирование на нужный web сервер.

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

Статья не будет описывать все варианты и настройки. Это просто заметка, чтобы не забыть самому как делал :) Возможно кому-то тоже пригодится.

У меня имеется старый web сервер httpd на CentOS 5 для внутренних нужд:

Настройка apache proxy

На нем нужно настроить проксирование запросов к сайту, чтобы перенаправлять их на другой веб сервер. Сделать это очень просто и быстро, рассказываю как. Открываем файл конфигурации httpd и проверяем там наличие нужного нам модуля:

# cat /etc/httpd/conf/httpd.conf | grep proxy_http_module
LoadModule proxy_http_module modules/mod_proxy_http.so

Все в порядке, модуль mod_proxy_http загружен. Теперь добавляем в самый конец httpd.conf:

<VirtualHost *:80>
  ServerAdmin admin@site.ru
  DocumentRoot /var/www/html
  ServerName site.ru
  ServerAlias www.site.ru
  ErrorLog logs/site.ru-error_log
  CustomLog logs/site.ru-access_log common
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyVia full
  <proxy *>    
    Order deny,allow
    Allow from all
  <proxy *>    
  ProxyPass        /  http://10.1.3.15:80/
  ProxyPassReverse /  http://10.1.3.15:80/
</VirtualHost>

Параметр DocumentRoot может быть любым каталогом. Теперь все запросы по адресу site.ru, которые попадут на указанный веб сервер будут перенаправлены на web сервер 10.1.3.15. На нем должен быть настроен этот же виртуальный хост стандартным способом. Какую-то специальную настройку на нем делать не надо.

Вот пример проксирования запросов к сайту по https.

<VirtualHost *:80 *:443>
  ServerAdmin admin@site.ru
  DocumentRoot /var/www/html
  ServerName site.ru
  ServerAlias www.site.ru
  ErrorLog logs/site.ru-error_log
  CustomLog logs/site.ru-access_log common
  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile /root/cert/site.ru.crt
  SSLCertificateKeyFile /root/cert/site.ru.key
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyVia full
  <proxy *>
    Order deny,allow
    Allow from all
  </proxy>
  ProxyPass / https://10.1.3.15:443/
  ProxyPassReverse / https://10.1.3.15:443/
</VirtualHost>

Более подробная информация по теме модуля apache mod_proxy находится на официальном сайте веб сервера — для версии 2.2 и 2.4.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:
  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

3 комментария

  1. Аватар
    Александр

    Добрый день.

    Пытался настроить проксирование для кириллического домена, но переадресация не происходит.
    В ServerName и ServerAlias внёс адрес сайта в punycode тоже результата не дало.

    apache отвечает, что не смог соединится. При этом он пытается соединиться с сайтом по внешнему ip, а не ip который я прописал в ProxyPass и ProxyPassReverse

    Подскажите в какую сторону копать?

  2. Аватар
    Дмитрий

    Спасибо за очередной полезный материал.
    Есть ли у Вас в планах написание материала по HAProxy ?

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

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.