cd /usr/ports/www/apache22make config
Потребуются опции:
mod_proxymod_proxy_httpmod_cachemod_disk_cache
Следующие опционально:
mod_proxy_ftp ## для ftpmod_proxy_connect ## для https
ставим:
make install clean
модули добавляются в конфиг автоматом. Добавляем в автозагрузку:
echo 'apache22_enable="YES"' >> /etc/rc.conf
Описываю только часть конфига, относящегося к прокси, так как у меня на апач ещё много чего навешано. Рекомендуется делать для прокси отдельный виртуалхост на 3128 порту, хотя можно и без него. <local ip> и <local subset> заменяем на свое
Listen <local_ip>:3128NameVirtualHost *:3128<VirtualHost *:3128> ProxyRequests On ## включаем проксирование ProxyVia Block ## блокируем Via-заголовки (можно не писать или написать Off) ## а если прокси не в локалке, то лучше включить <Proxy *> ## описываем что пользоваться прокси-сервером можно только локалке Order deny,allow Deny from all Allow from <local_subnet> </Proxy> CacheEnable disk / ## включаем дисковое кэширование CacheRoot /var/httpcache ## дира для кэша CacheMinFileSize 500 ## минимальный размер (в байтах) кэшируемого файла CacheMaxFileSize 10240000 ## максимальный размер (в байтах) кэшируемого файла CacheDirLevels 4 ## для ускорения доступа к кэшу апач используетт многоуровневую ## структуру каталогов. Эта опция указывает количество уровней CacheDirLength 4 ## указание длины названия директорий с кэшем## опциональноProxyBlock <хостнеймы или ключевые слова через пробел> ## блокируем ненужные сайтыNoProxy <host> ## что проксировать не надо, будет выдано как есть. ## Опять же несколько указываем через пробел.AllowCONNECT 80 443 ## порты на которые можно коннектиться</VirtualHost>
Подробнее про опции можно почитать здесь Создаем диру для кэша и обеспечиваем ее безопасность:
mkdir -p /var/httpcachechmod 0700 /var/httpcachechown www:www /var/httpcache
Теперь о размере кэша и его очистке. В комплекте с апачем есть утилита htcacheclean. Пишем в /etc/rc.conf :
htcacheclean_enable="YES" ## включаем автозапускhtcacheclean_cache="/var/httpcache" ## дира, где лежил кэшhtcacheclean_cachelimit="1024M" ## размер кэшаhtcacheclean_interval="60" ## за сколько минут кэш устаревает. Если не писать будет 60
Стартуем обе проги:
/usr/local/etc/rc.d/apache22 start/usr/local/etc/rc.d/htcacheclean start
теперь направим веб-трафик на наш прокси. Для pf :
rdr on $int_if proto tcp from $lan_in to $int_if port { 80, 443 } -> $ip_proxy port 3128
для ipfw (необходимо иметь options IPDIVERT в ядре)
${FwCMD} add divert 3128 from ${LanIN}/${NetMask} to any 80 443 out via ${LanOut}