Реверс-прокси, обратная прокси – это сервис/процесс, который создает для клиента видимость, что несколько http-функциональностей работают в рамках одного процесса, когда на самом деле они реализуются разными процессами (возможно даже на разных серверах).
Например: на локальной машине на порту 5002 запускаем Jekyll, а на порту 5001 – psgi-приложение. Хотим, чтобы обе функциональности были доступны по http://127.0.0.1:5003
: Jekyll-сайт – в корне, а psgi-приложение – в /smth
.
Такая задача решается с помощью реверс-прокси.
В качестве реверс-прокси часто используется Ngnix, также реверс-проксирование умеют Squid, Apache, другие программы. Например, Tinyproxy.
Ubuntu:
Пишем файл tinyproxy.conf
:
User nobody
Group nogroup
Port 5003
Listen 127.0.0.1
BindSame yes
Timeout 600
# поменять на подходящий
Logfile ".../tinyproxy/tinyproxy.log"
LogLevel Info
# поменять на подходящий
PidFile ".../tinyproxy/tinyproxy.pid"
MaxClients 5
MinSpareServers 2
MaxSpareServers 5
StartServers 2
MaxRequestsPerChild 0
Allow 127.0.0.1
ViaProxyName "tinyproxy2"
ConnectPort 0
ReversePath "/" "http://127.0.0.1:5002/"
ReversePath "/smth/" "http://127.0.0.1:5001/"
ReverseOnly Yes
ReverseMagic Yes
В директивах Logfile
и PidFile
подставить подходящие пути.
Запускаем:
tinyproxy -c tinyproxy.conf
Tinyproxy сразу демонизируется, и терминал не занимает.
pid запущенного процесса смотрим в файле из директивы PidFile
.
Смотрим на процесс:
ps gaxuww |grep `cat .../tinyproxy/tinyproxy.pid`
Останавливаем процесс:
kill `cat .../tinyproxy/tinyproxy.pid`
Читаем лог:
less .../tinyproxy/tinyproxy.log
CONNECT
(надо для проксирования https-трафика)MaxClients
, MinSpareServers
, MaxSpareServers
, StartServers
, MaxRequestsPerChild
)man tinyproxy
man tinyproxy.conf