Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Apache 2.2 as a proxy

Apache 2.2 как прокси-сервер

Автор: L!Ner.


Собственно нужно было поднять прокси в локалке чтоб трафик немного экономить.
Со squid я разбираться не хотел, тем более что почти на каждой машине есть веб-сервер,
вот и решил сделать прокси на апаче.
Ещё одним приемуществом apache является сокращение количества запущенных программ на сервере
как минимум на одну, так как апач одновременно может служить внутренним, а если надо и внешним
веб-сервером. Таким образом, сокращая количество программ, тем самым увеличиваем надежность.

cd /usr/ports/www/apache22
make config

Потребуются опции:
mod_proxy
mod_proxy_http
mod_cache
mod_disk_cache

Следующие опционально:
mod_proxy_ftp      ## для ftp
mod_proxy_connect  ## для https

Ставим:
make install clean

Модули добавляются в конфиг автоматом.
Добавляем в автозагрузку:
echo 'apache22_enable="YES"' >> /etc/rc.conf

Описываю только часть конфига, относящегося к прокси,
так как у меня на апач ещё много чего навешано.
Рекомендуется делать для прокси отдельный виртуалхост на 3128 порту, хотя можно и без него.
<local ip> и <local subset> заменяем на свое
Listen <local_ip>:3128
NameVirtualHost *: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/httpcache
chmod 0700 /var/httpcache
chown 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}



размещено: 2009-05-31,
последнее обновление: 2009-06-02,
автор: L!Ner


m0ps, 2009-06-02 в 9:50:44

для общего развития почитать про такую возможность интересно, но вот какой смысл делать прокси на апаче а не на сквиде? (нежелание разбираться со сквидом можно считать минусом для автора, а не плюсом в сторону апача)

LiNer, 2009-06-02 в 10:11:06

Смысл в отсутствии сквида на машине, где уже стоит апач.

яфдз, 2009-06-02 в 14:41:04

Ага, и теряется гибкость. Упал апачи, нету прокси. замечательно. ужасть.

LiNer, 2009-06-03 в 10:53:13

Не нравится - не ставьте. При правильной настройке апач падать не будет.

Ayzor, 2009-06-05 в 12:30:04

В Апаче есть свои преимущества. Например, можно заставить его сжимать весь траффик клиента.

m0ps, 2009-06-12 в 12:10:11

>>Смысл в отсутствии сквида на машине, где уже стоит апач.
аааййй... это не аргумент...
>>В Апаче есть свои преимущества. Например, можно заставить его сжимать весь траффик клиента.
а вот это уже что-то
;)

Creator, 2009-07-01 в 12:39:15

Как уже сказали "для общего развития почитать про такую возможность интересно", но на практике применять бы не стал.

Zemskov, 2009-09-07 в 11:05:11

Уязвимость позволяет удаленному пользователю произвести DoS атаку.
Уязвимость существует из-за ошибки в модуле mod_proxy_ftp при обработке ответов, полученных от FTP серверов. Удаленный пользователь может с помощью специально сформированного EPSV ответа вызвать разыменование нулевого указателя и аварийно завершить работу дочернего процесса Apache. Для успешной эксплуатации уязвимости должен использоваться потоковый Multi-Processing Module и модуль mod_proxy_ftp должен быть включен.

Alexey, 2010-06-23 в 17:21:13

apache-2.2.15_9 стоит такой апач

что заработало что не заработало


Listen *:5195
NameVirtualHost *:5195
<VirtualHost *:5195>
       ProxyRequests On ## включаем проксирование
#        ProxyVia off   ## не канает выдает ошибку
       <Proxy *>        ##
               Order deny,allow
              Deny from all
       AuthName "Administrators Only"
       Require user proxy
       Require valid-user
       Satisfy Any
       AuthType Basic
       AuthUserFile /usr/local/www/apache22/.htpasswd
       </Proxy>
#        CacheEnable disk /## не канает ругается
#        CacheRoot /var/httpcache  ## не канает ругается
#        CacheMinFileSize 500      ## минимальный размер (в байтах) кэшируемого файла
#        CacheMaxFileSize 10240000 ## максимальный размер (в байтах) кэшируемого файла
#        CacheDirLevels 4          ## для ускорения доступа к кэшу апач используетт многоуровневую
#                                  ## структуру каталогов. Эта опция указывает количество уровней
#        CacheDirLength 4          ## указание длины названия директорий с кэшем
## опционально
ProxyBlock sex
NoProxy www.oldcomp.ru ## что проксировать не надо, будет выдано как есть.
#               ## Опять же несколько указываем через пробел.
# AllowCONNECT 80 443 ## тож не канает
</VirtualHost>


И того получаем вход по логину и паролю к своей проксе и если что юзаем её из интрнета !!!



 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0411 секунд
Из них PHP: 26%; SQL: 74%; Число SQL-запросов: 77 шт.
Исходный размер: 27200; Сжатая: 6888