Простой proxy сервер на go
Для сборки требуется golang https://golang.org/dl/
go get -u github.com/topvisor/go-prifma/cmd/[email protected]
$GOPATH/bin/prifma --config /path/to/prifma.conf
Пример конфигурации: https://github.com/topvisor/go-prifma/blob/master/example/config/prifma.conf
Загрузить файлы конфигурации в текущий контекст
- Syntax: include glob ...;
- Default: –
- Context: *
Настройки сервера
- Syntax: server { ... }
- Default: –
- Context: main
Слушать ip
- Syntax: listen_ip ip;
- Default: listen_ip 0.0.0.0;
- Context: server
Слушать port
- Syntax: listen_port port;
- Default: listen_port 3128;
- Context: server
Тип сервера
- Syntax: listen_schema http | https;
- Default: listen_schema http;
- Context: server
Указать путь к публичному сертификату сервера.
- Syntax: cert_file path;
- Default: –
- Context: server
Указать путь к приватному сертификату сервера.
- Syntax: key_file path;
- Default: –
- Context: server
Лог ошибок
- Syntax: error_log path;
- Default: error_log off;
- Context: server
Лог debug
- Syntax: debug_log path;
- Default: debug_log off;
- Context: server
Максимальное время чтения входящего запроса (включая тело запроса)
- Syntax: read_timeout time;
- Default: read_timeout 0s;
- Context: server
Максимальное время чтения заголовков входящего запроса
- Syntax: read_header_timeout time;
- Default: read_header_timeout 0s;
- Context: server
Максимальное время ответа на входящий запрос
- Syntax: write_timeout time;
- Default: write_timeout 0s;
- Context: server
Максимальное время ожидания запроса до закрытия соединения
- Syntax: idle_timeout time;
- Default: idle_timeout 0s;
- Context: server
Лог запросов
- Syntax: access_log path | off;
- Default: access_log off;
- Context: main, condition
Расширенный лог запросов (для отладки)
- Syntax: dump_log path | off;
- Default: dump_log off;
- Context: main, condition
"Basic" HTTP Authentication. Для включения требуется указать путь к файлу htpasswd
- Syntax: basic_auth path | off;
- Default: basic_auth off;
- Context: main, condition
ip адреса, используемые prifma для запросов (случайный ip из списка)
- Syntax: outgoing_ip ip...; | { ip;... } | off;
- Default: outgoing_ip 0.0.0.0;
- Context: main, condition
Установить ip адрес для запроса исходя из переданного заголовка Proxy-Use-Ip
- Syntax: use_ip_header on | off;
- Default: use_ip_header off;
- Context: main, condition
Заблокировать входящие запросы (423 Locked
)
- Syntax: block_requests on | off;
- Default: block_requests off;
- Context: main, condition
Отправить исходящие запросы через прокси
- Syntax: proxy_requests url { ... } | url; | off;
- Default: proxy_requests off;
- Context: main, condition
Установить заголовок, при отправке запроса через прокси указанный в proxy_requests
- Syntax: proxy_header key val;
- Default: –
- Context: proxy_requests
Применить директивы при выполнении условия.
- Syntax: condition key type val { ... }
- Default: –
- Context: main, condition
src_ip
- ip клиентаdst_domain
- домен, к которому будет выполнен исходящий запросdst_url
- url, к которому будет выполнен исходящий запросheader_*
- заголовок входящего запроса (напримерheader_user_agent
,header_cookie
)user
- имя пользователя
=
- равенство~
- регулярное выражениеcidr
- маска в формате CIDR