Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!

Apache-proxy

Apache можно использовать в качестве proxy-сервера. Для этого ему нужен стандартный модуль mod_proxy. Поддерживается оба варианта проксирования. Кроме того, Apache может проксировать не только HTTP, но я здесь буду говорить про HTTP.

Обычный proxy

Обычный proxy-сервер работает по схеме:

[клиент] <-> [proxy] <-> [любой сервер в интернете]

Чтобы Apache работал в качестве такого proxy, добавляем в httpd.conf виртуальный хост с примерно таким настройками:

# слушаем порт 7000
Listen 7000
# на этом порту организуем виртуальный хост
<VirtualHost *:7000>
# разрешаем доступ только с localhost
# (можно прописать несколько машин, с которых
# разрешён доступ)
  <Proxy *>
    Order deny,allow
    Deny from all
    Allow from localhost
  </Proxy>
# включаем проксирование
  ProxyRequests On
# включаем протоколирование
  CustomLog /usr/home/a/local/test/logs/proxy_log common
# можно добавить кэширование, см. документацию
# на модуль mod_cache
</VirtualHost>

После этого появляется прокси на порту 7000.

Управление заголовками

Для управления заголовками требуется модуль mod_headers.

Заголовки, исходящие от браузера, управляются директивой RequestHeader. Например можно изменить заголовок User-Agent, запретить передачу Referer и Cookie:

RequestHeader set User-Agent "Mozilla/5.0 (http://michurin.com.ru)"
RequestHeader unset Referer
RequestHeader unset Cookie

Заголовки, приходящие клиенту (браузеру), управляются директивой Header. Например, можно запретить cookie и спрятать от клиентов характеристики серверов:

Header unset Server
Header unset Set-Cookie

Хотя перегибать тут не надо.

proxy-акселератор

Акселератор работает иначе, он организует не доступ клиента к другим серверам, а доступ клиентов к вашему серверу. Схема такова:

[клиенты] <-> [proxy-акселератор] <-> [ваш сервер]

Допустим ваш сервер работает на порту 8080, а акселератор организует доступ к нему через порт 80. Тогда минимальная настройка такова:

Listen 8080
<VirtualHost *:8080>
  # настрока VirtualHost на порту 8080
</VirtualHost>
Listen 80
<VirtualHost *:80>
  ProxyRequests Off
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
  CustomLog /usr/home/a/local/test/logs/proxy_log common
</VirtualHost>

Через такой proxy очень удобно отлаживать web-приложения, которые в реальной жизни будут работать по подобной схеме, за всякими балансировщиками. Это позволяет очень точно сымитировать реальную рабочую среду.

Эта страница набрала не малую популярность, её посещает множество людей, поэтому я решил провести небольшое исследование. Если у вас есть комментарий, если вы сочли полученную информацию полезной, не полной, или вообще бесполезной, вы можете высказать своё мнение, пожелания, дополнения.

Если вы ожидаете получить от меня ответ или разъяснение, пожалуйста укажите e-mail, ICQ или другую контактную информацию.
Ваше сообщение не появится на странице, а просто отправится мне.

© 1999 − 2008 Мичурин Алексей — http://www.michurin.com.ru/