﻿# Настройка HAProxy для работы ELMA365 через обратный прокси 

> [HTML Version](haproxy-elma365.html)

Обратный прокси предназначен для переадресации запросов, приходящих от внешних пользователей на сервер, расположенный в корпоративной сети предприятия. Обратный прокси устанавливается на шлюзе компании, который имеет:

- как минимум один публичный (белый) IP-адрес, на который приходят запросы из сети интернет;

- подключение к корпоративной сети, например:

	- для IPv4‑сети — 192.168.1.0/24;

	- для IPv6-сети — 2a01:4f8::/64.

Для работы обратного прокси зарегистрируйте доменное имя и добавьте A‑запись в DNS, указывающую на публичный IP-адрес обратного прокси. Можно зарегистрировать неограниченное количество доменных имён на один IP-адрес и, в зависимости от доменного имени, распределить приходящий трафик на разные серверы внутри корпоративной сети.

В примерах конфигураций ниже используются:

- доменное имя **elma365client.domain.com**;

- IPv4‑адрес 192.168.1.10 или IPv6‑адрес 2a01:4f8::1, на котором расположен сервер с приложением ELMA365.

````
начало внимание

````
Корректная работа приложения ELMA365 невозможна через проброс портов (Port Forwarding). В статье приводится пример работы с использованием HAProxy в качестве обратного прокси-сервера.

````
конец внимание

````
Конфигурация обратного прокси для приложения ELMA365 на примере HAProxy для IPv4‑сети:

````
global  
    maxconn 10000  
    log /dev/log   local0  
    log /dev/log   local1 notice  
    chroot /var/lib/haproxy  
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners  
    stats timeout 30s  
    user haproxy  
    group haproxy  
    daemon  
  
    ca-base /etc/ssl/certs  
    crt-base /etc/ssl/private  
  
    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384  
    ssl-default-bind-ciphersuites TLS\_AES\_128\_GCM\_SHA256:TLS\_AES\_256\_GCM\_SHA384:TLS\_CHACHA20\_POLY1305\_SHA256  
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets  
  
defaults  
    log   global  
    mode   http  
    option   httplog  
    option   dontlognull  
    timeout connect 5000  
    timeout client  50000  
    timeout server  50000  
    errorfile 400 /etc/haproxy/errors/400.http  
    errorfile 403 /etc/haproxy/errors/403.http  
    errorfile 408 /etc/haproxy/errors/408.http  
    errorfile 500 /etc/haproxy/errors/500.http  
    errorfile 502 /etc/haproxy/errors/502.http  
    errorfile 503 /etc/haproxy/errors/503.http  
    errorfile 504 /etc/haproxy/errors/504.http  
  
frontend elma365\_web  
    mode http  
    bind \*:80  
    bind \*:443 ssl crt /etc/ssl/private/elma365.pem  
    redirect scheme https code 301 unless \{ ssl\_fc \}  
    maxconn 10000  
  
    acl elma365 hdr(host) -i elma365client.domain.com  
    use\_backend elma365\_server if elma365  
  
backend elma365\_server  
    mode http  
    balance leastconn  
    option forwardfor  
    option httpclose  
    option tcp-check  
    server elma365-1 192.168.1.10:443 verify none sni str(elma365client.domain.com) check ssl

````
Конфигурация обратного прокси для приложения ELMA365 на примере HAProxy для IPv6-сети

````
global  
    maxconn 10000  
    log /dev/log   local0  
    log /dev/log   local1 notice  
    chroot /var/lib/haproxy  
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners  
    stats timeout 30s  
    user haproxy  
    group haproxy  
    daemon  
  
    ca-base /etc/ssl/certs  
    crt-base /etc/ssl/private  
  
    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384  
    ssl-default-bind-ciphersuites TLS\_AES\_128\_GCM\_SHA256:TLS\_AES\_256\_GCM\_SHA384:TLS\_CHACHA20\_POLY1305\_SHA256  
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets  
  
defaults  
    log   global  
    mode   http  
    option   httplog  
    option   dontlognull  
    timeout connect 5000  
    timeout client  50000  
    timeout server  50000  
    errorfile 400 /etc/haproxy/errors/400.http  
    errorfile 403 /etc/haproxy/errors/403.http  
    errorfile 408 /etc/haproxy/errors/408.http  
    errorfile 500 /etc/haproxy/errors/500.http  
    errorfile 502 /etc/haproxy/errors/502.http  
    errorfile 503 /etc/haproxy/errors/503.http  
    errorfile 504 /etc/haproxy/errors/504.http  
  
frontend elma365\_web  
    mode http  
    bind \[::\]:80  
    bind \[::\]:443 ssl crt /etc/ssl/private/elma365.pem  
    redirect scheme https code 301 unless \{ ssl\_fc \}  
    maxconn 10000  
  
    acl elma365 hdr(host) -i elma365client.domain.com  
    use\_backend elma365\_server if elma365  
  
backend elma365\_server  
    mode http  
    balance leastconn  
    option forwardfor  
    option httpclose  
    option tcp-check  
    server elma365-1 \[2a01:4f8::1\]:443 verify none sni str(elma365client.domain.com) check ssl
````

````
При установке или реконфигурации в поле **Enter ELMA365 domain name (FQDN) or IP address** пропишите внешний домен **elma365client.domain.com**, по которому будет доступна ELMA365, а также:

- в On-Premises Standard включите параметр \[OBJECT\];

- в On-Premises Enterprise в файле \[OBJECT\] для параметра \[OBJECT\] введите значение \[OBJECT\].