Прокси – единая точка входа в приложение, может использоваться в двух режимах, как основной веб сервер (прямой прокси) с помощью, которого можно настроить защищённое https соединение или как обратный прокси, который будет работать за внешним, сконфигурированным на стороне клиента веб сервером.
Настройка прямого прокси осуществляется с помощью переменных среды, имеющих префикс PROXY
Прямой прокси имеет два режима работы:
PROXY_SSL_ENABLED - Значение в формате true/false, определяющее использование защищённого https соединения с помощью SSL сертификатов. Значение по умолчанию: true.
# Включить использование https
PROXY_SSL_ENABLED=true
PROXY_CERT_PATH - Строка содержащая абсолютный или относительный путь к файлу сертификата выданным удостоверяющим центром заказчика, файл сертификата должен быть в .pem формате, содержать сертификат объекта, закрытый ключ и образовывать полную цепочку доверия.
# Путь к сертификату
PROXY_CERT_PATH=/etc/ssl/planr.pem
Настройка обратного прокси осуществляется если необходимо использовать внешний веб сервер, например nginx или haproxy. Для настройки необходимо:
Примеры конфигурация для наиболее распространённых веб серверов.
http {
server {
listen 80;
server_name planr.com;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://planr;
# enable WebSockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
listen 81;
server_name planr-admin.com;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://planr_admin;
# enable WebSockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
upstream planr {
server localhost:8080;
}
upstream planr_admin {
server localhost:8081;
}
}
listen http
bind \*:80
default_backend planr_servers
listen http
bind \*:81
redirect location /admin if { path / }
default_backend planr_servers
backend planr_servers
option httpchk HEAD /health
http-check expect status 200
cookie io prefix indirect nocache # using the `io` cookie set upon handshake
server planr localhost:8080 check cookie planr
backend planr_admin_servers
option httpchk HEAD /health
http-check expect status 200
cookie io prefix indirect nocache # using the `io` cookie set upon handshake
server planr localhost:8081 check cookie planr