|
|
Поддержка шифрования SSL в Apache (HTTPs) | Установка eAccelerator для работы с PHP5 [FreeBSD 6.3 & Apache 1.3] |
|
Полиграфия и типография, услуги , брошюры
|
Apache веб сервер в качестве прокси сервера [mod_proxy]
Обсудить эту тему на форуме.
В предыдущих статьях приводился пример настройки и использования Apache в качестве веб сервера. Почитать об этом можно здесь и здесь. Однако Apache также можно использовать нестандартным для него способом - в качестве простого прокси сервера. Функцию прокси в Apache подключает модуль mod_proxy. Настройка занимает всего несколько минут и несколько строк в конфигурационном файле httpd.conf. В принципе, на мой взгляд Apache - это не самый удачный способ организовать прокси для большого числа клиентов, но раз в Apache такая возможность ей, рассмотрим ее.
Первым делом следует помнить о безопасности. В сети Интернет достаточно много открытых прокси серверов, отчасти образовавшихся от того, что кто-то установил какое-либо программное обеспечение и неправильно его настроил. Чем чревато наличие открытого (неавторитативного) прокси в своей сети, думаю, пояснять не стоит.
Для того, чтобы Apache смог начать обрабатывать прокси запросы, нам следует в конфигурационный файл /usr/local/etc/apache/httpd.conf включить поддержку модуля mod_proxy. Проверьте, на всякий случай, что у Вас в httpd.conf присутствуют строчки: - в секции LoadModule
LoadModule proxy_module libexec/apache/libproxy.so
и в секции AddModule
AddModule mod_proxy.c
По-умолчанию, этот модуль подключается со всеми остальными. Кстати, об этом, точнее о потенциальной опасности при использовании этого модуля, предупреждает программа установки Apache, после инсталяции его из портов:
===> SECURITY REPORT:
This port has installed the following files which
may act as network servers and may therefore
pose a remote security risk to the system.
/usr/local/libexec/apache/libproxy.so
Далее, (у меня перед описанием виртуальных хостов) следует прописать директивы для работы прокси сервера.
### Enable Proxy via Apache web server ### ProxyRequests On ProxyVia On <Directory proxy:*> Order Deny,Allow Deny from all Allow from 192.168.0.0/24 </Directory> CacheRoot "/usr/local/www/proxy" CacheSize 10240 CacheGcInterval 4 CacheMaxExpire 24 CacheLastModifiedFactor 0.1 CacheDefaultExpire 1 CacheDirLevels 3 CacheDirLength 1 NoCache providers.net mp3site.com videoarchive.net ##############################
После добавления этих строк перезапускаем Apache через apachectl restart. Пропишите в своем браузере в качестве прокси IP адрес Вашего сервера, порт 80 и попробуйте запросить какой-либо узел. После первого же запроса, в каталоге /usr/local/www/proxy появится дерево каталогов-подкаталогов в стиле squid. В этих каталогах будет храниться кеш прокси сервера. Касательно директив:
- ProxyRequests - разрешает (On) или запрещает (Off) обработку прокси запросов.
- ProxyVia - устанавливает режим передачи HTTP заголовков. При значении On - прокси сервер будет перенаправлять все заголовки браузера клиента к запрашиваемому узлу. Возможны также значения Off, Full и Block. Full добавляет в заголовок версию прокси сервера, а вот Block удаляет все исходящие заголовки Via. С таким значением можно настроить анонимный прокси сервер.
- Контейнер Directory proxy:* описывает права доступа к прокси серверу. Все настройки доступа в нем по аналогии с остальными в файле httpd.conf. Вышеуказанный пример запрещает в первую очередь доступ к прокси для всех, а потом разрешает его для сети 192.168.0.0/24. Внимание! Если не уверены в том, что пишите здесь, лучше прежде почитайте документацию, иначе ошибка в правилах доступа может обернуться для Вас "дырявым" прокси!
- CacheRoot - прописывает путь корневого каталога кеша прокси сервера. В нем будут автоматически созданы все необходимые каталоги. Без указания этой директивы функция прокси сервера работать не будет.
- CacheSize - максимально допустимый размер кеша в килобайтах. В вышеприведенном примере кеш равен 10 MB.
- CacheGcInterval - определяет промежуток времени через который прокси сервер будет проверять свой кеш и удалять файлы, если размер кеша превышает CacheSize. Поддерживаются значения с "плавающей" точкой. Тоесть можно указать значение 0.5 - для проверки кеша каждые полчаса.
- CacheMaxExpire - указывает время "жизни" в часах, для каждого HTTP документа, который был закеширован. Через это время документ будет удален.
- CacheLastModifiedFactor. Если узел, с которого запрашивается документ, не отдает время истечения срока жизни документа (Expiry period), то этот срок будет установлен по следущей формуле: [Истечение срока жизни = Время с момента последнего изменения * CacheLastModifiedFactor]. Если документ был изменен 10 часов назад, а CacheLastModifiedFactor равен 0.1 то срок жизни документа в кеше истечет через 10 * 0.1 = 1 час.
- CacheDefaultExpire установит значение времени истечения срока жизни документа (expiry time) в часах, если документ был получен по протоколу, который не поддерживает передачу этого заголовка.
- CacheDirLevels - установит значение уровней каталогов кеша прокси сервера.
- CacheDirLength - устанавливает количество символов в названии каталогов кеша.
- NoCache - указывает на доменные имена, с которых запрошенные документы не будут кешированы.
Вот и все настройки. Все достаточно просто. В чем-то не хватает дополнительной функциональности, вроде ограничения на размер кешируемого файла, но это уже как говорится "на вкус и цвет".
Все логи доступа через прокси Apache будет писать в свой лог (Custom) по умолчанию, прописанный как основной лог файл доступа. У меня это /var/log/apache/httpd-access.log. Ошибки сервер будет записывать в /var/log/apache/httpd-error.log. Как переназначить лог файл (чтобы прокси запросы не смешивались в логах с запросами к основному web серверу) я не знаю, не нашел. Возможно, mod_proxy этого не поддерживает.
Более подробную информацию можно получить на странице модуля mod_proxy.
Ключевые слова
apache | apache freebsd | apachectl | FreeBSD | httpd | httpd.conf | mod_proxy | proxy | unix | программы для unix | прокси сервер
Публикации по теме
Подпишись на
ленту и будь в курсе обновлений
|
|
|
|
|
|

