Дек 10 2008

Установка и настройка прокси сервера OOPS

OOPS, модульный, многопотоковый прокси сервер, целью проекта является создание быстрого, устойчивого прокси сервера. Благодаря тому, что в качестве хранилища, OOPS использует файлы, представляющие собой простейшую псевдо файловую систему, с btree индексом для быстрого доступа к объектам. OOPS не требует никаких дополнительных программ, все действия над хранилищем и т.п. выполняются модулями.

Приступим к установке:

cd /usr/ports/www/oops
make install clean

Перед сборкой вызывается диалог настройки:

┌────────────────────────────────────────────────────────────────────┐
│                    Options for oops 1.5.24_6                       │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │             [ ] GIGABASE  GigaBase storage                     │ │
│ │             [ ] DB4       Berkeley DB v4 storage               │ │
│ │             [ ] MYSQL     MySQL auth support                   │ │
│ │             [ ] PGSQL     PostgreSQL auth support              │ │
│ │             [X] PCRE      PCRE support                         │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│                       [  OK  ]       Cancel                        │
└────────────────────────────────────────────────────────────────────┘

GigaBase storage — эта настройка позволит вам создавать большие хранилища, больше 2 гигабайт.
Berkeley DB v4 storage — будет использоваться для хранилища формат базы DB v4.
MySQL auth support — установка модуля проводящего авторизацию через базу MySQL.
PostgreSQL auth support — модуль для авторизации через базу PostgreSQL.
PCRE support — поддержка расширенный (перл) регекспов для обработки url и тд и тп в OOPS.

Настройка:
Как пример настройки приведу свой рабойчи конфиг. У меня OOPS используется как прокси сервер для локальной сети без авторизации, и если я подключаюсь из вне своей сети — то будет использоваться авторизация.
Файл настроек /usr/local/etc/oops/oops.cfg:

#DNS сервер
nameserver 127.0.0.1
#Порт на котором слушает сервер
http_port       3128
icp_port        3130
userid  oops
#Лог файлы
logfile /var/log/oops/oops.log { 3 1m } unbuffered
accesslog       /var/log/oops/access.log { 3 1m } unbuffered
pidfile         /var/run/oops/oops.pid
#Это очень интересный файл если просмотреть его с помощью cat
#то увидим статистику использования сервера
statistics      /var/run/oops/oops_statfile
#Количество используемой памяти
mem_max         64m
lo_mark         8m
default-expire-value    7
ftp-expire-value        7
max-expire-value        30
last-modified-factor    5
default-expire-interval 1
icp_timeout     1000
disk-low-free   3
disk-ok-free    5
force_http11
force_completion 75
maxresident     1m
insert_x_forwarded_for  yes
insert_via              yes
fetch_with_client_speed yes
acl     MSIE            header_substr   user-agent MSIE
acl     ADMINS          src_ip          127.0.0.1
acl     PURGE           method          PURGE
acl     CONNECT         method          CONNECT
acl     SSLPORT         port            443
acl LOCAL_NET 192.168.0.0/24
acl_deny PURGE !ADMINS
acl_deny CONNECT !SSLPORT
stop_cache      ?
stop_cache      cgi-bin
local-networks  10/8 192.168.0.0/24
#Описываем свою сеть. Та сеть которой не требуется авторизация
group   mynet   {
        networks        192.168/16 127/8;
        networks_acl    LOCAL_NETWORKS !BAD_NETWORKS ;
        badports        [0:79],110,138,139,513,[6000:6010] ;
        miss            allow;
        http {
                allow   dstdomain * ;
        }
}
#Для всех остальных включаем авторизацию
group auth {
        networks        0/0;
        badports        [0:79],110,138,139,513,[6000:6010];
        auth_mods       passwd_file;
         http {
                allow   dstdomain * ;
        }
 
}
 
group   world   {
        networks        0/0;
        badports        [0:79],110,138,139,513,[6000:6010];
        http {
                deny    dstdomain * ;
        }
        icp {
                deny    dstdomain * ;
        }
}
 
 
storage {
        path /home/share/oops_storage/oops_storage ;
        size 20m ;
}
 
module lang {
 
        default_charset koi8-r
 
        CharsetRecodeTable windows-1251 /usr/local/etc/oops/tables/koi-win.tab
        CharsetRecodeTable ISO-8859-5 /usr/local/etc/oops/tables/koi-iso.tab
        CharsetRecodeTable ibm866 /usr/local/etc/oops/tables/koi-alt.tab
        CharsetAgent windows-1251 AIR_Mosaic IWENG/1 MSIE WinMosaic (Windows (WinNT;
        CharsetAgent windows-1251 (Win16; (Win95; (Win98; (16-bit) Opera/3.0
        CharsetAgent ibm866 DosLynx Lynx2/OS/2
}
module err {
        # error reporting module
 
        # template
        template /usr/local/etc/oops/err_template.html
 
        # Language to use when generate Error messages
        lang ru
}
#Модуль отвечающий за авторизацию
module passwd_file {
        realm           oops
        scheme          Basic
        file            /usr/local/etc/oops/passwd
        template        /usr/local/etc/oops/auth_template.html
}
 
module redir {
        file            /usr/local/etc/oops/redir_rules
        template        /usr/local/etc/oops/redir_template.html
        myport 3128
}
 
module oopsctl {
        socket_path     /var/run/oops/oopsctl
        html_refresh    300
}
module  vary {
        user-agent      by_charset
        accept-charset  ignore
}

Настройки в основном сохранены по умолчанию и за все время работы изменений не требовали.
Для того что бы создать файл /usr/local/etc/oops/passwd, необходимо воспользоваться утилитой htpasswd, которая обязательно входит в комплект apache.

После того, как файл настроек сохранен, необходимо отредактировать /etc/rc.conf, что бы oops стартовал:

oops_enable="YES"

Теперь можно запускать:

/usr/local/etc/rc.d/oops start

На этом настройка закончена.

На этом все. Можно пользоваться.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть