Веб-сервер apache является, пожалуй, самым популярным веб-сервером в интернете. Одной из причин его популярности является простота конфигурирования и модульность, которые позволяют использовать его практически для любых целей, вплоть до bittorent-трэкера.
Далее будет показано как настроить apache на сервере небольшой организации в качестве веб и прокси сервера одновременно. Плюсом такого решения будет уменьшение требований к памяти на сервере и, соответственно, повышение производительности. В качестве бонуса мы добавим к прокси-серверу фильтрацию рекламы с помощью adzapper.
Начальные условия:
- Сервер под управлением Ubuntu Server 8.04.1.
- Локальная сеть 192.168.2.0/255.255.255.0.
- Сайт организации somedomain.com.
Установим apache, adzapper, а так же модуль поддержки php5, который может потребоваться для работы сайта нашей организации:
apt-get install apache2 libapache2-mod-php5 adzapper
Сразу после установки подключим необходимые модули:
a2enmod proxy && a2enmod proxy_http && a2enmod rewrite && a2enmod cache && a2enmod disk_cache && a2enmod php5
Краткое описание подключаемых модулей:
Модуль | Описание |
---|---|
proxy | Основной модуль для работы в качестве прокси. Необходим для всех модулей proxy_*. |
proxy_http | Модуль для работы в качестве http-прокси. Остальные протоколы мы проксировать не будем. |
rewrite | Знаменитый модуль для подмены URL. Необходим для работы adzapper. |
cache | Основной модуль для поддержки кэширования. Необходим для всех модулей cache_*. |
disk_cache | Модуль для хранения кэша на диске. |
php5 | Модуль для поддержки php-скриптов. Необходим только если корпоративный сайт написан на php. |
Далее переходим к настройке. Для этого первым делом открываем в редакторе файл /etc/apache2/mods-enabled/proxy.conf и приводим его к следующему виду:
<IfModule mod_proxy.c> # Включаем проксирование ProxyRequests On # Перенаправление запросов на "родительский" прокси. # Если необходимости в таком перенаправлении нет - достаточно # просто закомментировать строку. ProxyRemote * http://127.0.0.1:8080 # Разрешаем перезапись URL и подключаем adzapper RewriteEngine On RewriteLock /var/lock/apache2/rewrite-adzapper RewriteMap adzap prg:/usr/bin/adzapper.wrapper # Разрешаем проксировать запросы с локалхоста и локальной сети <Proxy *> AddDefaultCharset off Order deny,allow Deny from all Allow from 127.0.0.1 Allow from 192.168.2.0/255.255.255.0 </Proxy> ProxyVia On </IfModule>
Затем открываем файл /etc/adzapper.conf и снимаем комментарий со строки:
NO_CHANGE_VALUE="NULL"
Подробнее о настройке adzapper можно прочитать тут. Закончив настройку перезапускаем apache:
/etc/init.d/apache2 restart
Теперь можно попробовать протестировать прокси-сервер, указав в настройках браузера в качестве прокси-сервера адрес нашего сервера (прошу прощения за тавтологию) и порт 80.
К сожалению, apache не умеет работать в качестве прозрачного прокси-сервера, однако тут на помощь приходит transproxy, о настройке которого уже писалось ранее. Единственное отличие от той конфигурации - запросы будут перенаправляться на порт 80, а не 8123.
Логи прокси-сервера будут писаться туда же, куда и логи виртуального хоста по умолчанию, то есть в файл /var/log/apache2/access.log. Соответственно, можно на основании этого файла генерировать статистику с помощью webalizer или awffull, но эту задачу мы оставим читателю.
Итак, задача почти решена. Осталось разместить на сервере виртуальный хост с сайтом компании. Для этого создаём файл /etc/apache2/sites-available/somedomain.com следующего содержания:
<VirtualHost *:80> ServerName somedomain.com ServerAdmin admin@somedomain.com DocumentRoot /home/webmaster/html <Directory /home/webmaster/html> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/somedomain-error.log CustomLog /var/log/apache2/somedomain-access.log combined </VirtualHost>
Разрешаем использование этого сайта:
a2ensite somedomain.com
И перезапускаем веб-сервер:
/etc/init.d/apache2 restart
На этом пожалуй всё. Приятной работы!
PycmaM 2008-09-17 08:48:11 (#)