Конфигурация внешнего балансировщика нагрузки/прокси-сервера¶
Для правильной работы Системы необходимо указать внешний URL - адрес, по которому пользователи заходят в AW. URL состоит из нескольких частей (для примера рассмотрен URL - "https://aw-demo.ru/aw"):
- Origin - часть, содержащая протокол и доменное имя (для данного примера - "https://aw-demo.ru");
- Path - путь (часть после доменного имени) (для данного примера - "/aw").
Параметры конфигурации отвечающие за URL по которому доступна AW:
-
FRONTEND_URL - полный URL, на котором развернута AW (URL, по которому пользователи входят в AW). Значение не должно включать конечный символ /. Примеры:
-
FRONTEND_BASE_HREF - путь относительно доменного имени. Значение должно включать начальный и конечный символы /. Примеры:
Схема работы AW за reverse-proxy¶
Конфигурации reverse-proxy nginx в случае, когда FRONTEND_BASE_HREF отличен от "/"¶
Если Система (AW) располагается по URL, путь в котором отличен от "/", то необходимо применять внешний прокси-сервер (например, nginx), в котором нужно настроить переписывание адресов (URL Rewriting) при проксировании запросов.
В AW запросы должны поступать без префикса пути в URL, т.е., например, запрос к "https://aw-demo.ru/aw" должен переписываться в виде "http://aw-demo.ru/", а запрос к "https://aw-demo.ru/aw/api/some/path" должен переписываться в виде "http://aw-demo.ru/api/some/path".
К передаваемым HTML-документам не должно применяться переписывание адресов (URL Rewriting).
Ниже описан пример для AW, размещенного по адресу https://example.ru/aw (параметр конфигурации FRONTEND_URL), для веб-сервера AW выбран порт 5050 (параметр конфигурации AW_FRONTEND_HTTP_PORT). Тогда фрагмент конфигурации для nginx может выглядеть следующим образом:
- создайте файл /etc/nginx/conf.d/aw.conf (для RED ОС) или /etc/nginx/sites-enabled/aw.conf для Debian и Ubuntu,
-
поместите в созданный файл директивы для настройки виртуального сервера nginx:
upstream upstream_aw { server localhost:5050; } server { listen 80; server_name <IP-адрес или имя сервера, должен совпадать с FRONTEND_URL> access_log /var/log/nginx/aw.access.log; error_log /var/log/nginx/aw.error.log error; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types application/javascript text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss image/svg+xml text/javascript; client_max_body_size 100m; client_body_timeout 3600; location /aw { return 302 /aw/; } location ~ ^/aw/(.*)$ { resolver 127.0.0.1 ipv6=off; rewrite /aw/(.*) /$1 break; proxy_pass http://upstream_aw; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_cache_bypass $http_upgrade; } }
-
проверьте корректность настройки командой sudo nginx -t:
Пример конфигурации nginx в качестве прокси-сервера для терминирования SSL трафика (настройка https)¶
Пример конфигурации nginx в качестве прокси-сервера для терминирования SSL трафика (настройка https):
- подключитесь к серверу AW по ssh;
- перейдите в директорию установки AW:
cd /opt/aw/app
; - установите значение AW_FRONTEND_HTTP_PORT в отличное от 80 и 443, например 8088;
- перезапустите frontend, чтобы изменения вступили в силу:
docker compose up -d
; - создайте файл /etc/nginx/conf.d/aw.conf (для RED ОС) или /etc/nginx/sites-enabled/aw.conf для Debian и Ubuntu;
-
поместите в созданный файл директивы для настройки виртуального сервера nginx:
server { listen 443 ssl http2; server_name <IP-адрес или имя сервера, должен совпадать с FRONTEND_URL> access_log /var/log/nginx/aw.access.log; error_log /var/log/nginx/aw.error.log error; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types application/javascript text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss image/svg+xml text/javascript; client_max_body_size 100m; client_body_timeout 3600; ssl on; ssl_certificate <путь к сертификату>; ssl_certificate_key <путь к ключу>; location / { proxy_pass http://127.0.0.1:8088; proxy_set_header Host $host; proxy_read_timeout 86400; } location ~ ^/ws { proxy_pass http://127.0.0.1:8088; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_read_timeout 86400; } } server { listen 80; server_name <IP-адрес или имя сервера, должен совпадать с FRONTEND_URL>; return 301 https://aw-demo.ru$request_uri; }
-
проверьте корректность настройки командой sudo nginx -t: