Настройка Nginx

Nginx является опциональным компонентом поставки с версии Закрома.Хранение 2.9.0. В данной конфигурации Nginx выполняет роль reverse proxy для сервисов Закрома.Хранение, точки TLS-терминации и статического хостинга Web-UI.

Описанная ниже конфигурация предназначена для legacy-инсталляций, в которых Nginx использовался ранее и должен быть сохранён при обновлении. Для новых инсталляций необходимость установки Nginx определяется целевой схемой доступа к S3 API и Админ-панели.

Настройка выполняется отдельным шагом после подготовки inventory, сертификатов и переменных Закрома.Хранение.

Inventory

Добавьте узлы, на которых должен быть установлен и настроен Nginx, в группу zakroma-storage-nginx.

Пример для базового кластера:

1[zakroma-storage-nginx] 2rutherford-2 ansible_host=192.168.1.2 3rutherford-3 ansible_host=192.168.1.3 4rutherford-4 ansible_host=192.168.1.4

Переменные Zakroma-Storage

В файле inventories/<тип_инсталляции>/group_vars/zakroma-storage.yml включите использование Nginx-прокси:

1zakroma_storage_nginx_proxy: true

Проверьте, что в этом же файле корректно указаны домены и порты сервисов, которые используются в Nginx-конфигурации:

1zakroma_storage_admin: 2 path: "zakroma-admin.zakroma.internal" 3 4zakroma_storage_base_domain: "zakroma.internal" 5 6zakroma_storage_gateway: 7 s3api_port: 8080 8 management_port: 8083

Значения должны соответствовать доменной зоне и портам конкретной инсталляции.

Переменные Nginx

Основная настройка Nginx выполняется в файле inventories/<тип_инсталляции>/group_vars/zakroma-storage-nginx.yml.

Минимально проверьте следующие параметры:

1nginx_package_name: "nginx" 2nginx_service_state: started 3nginx_service_enabled: true 4nginx_remove_default_vhost: true 5nginx_listen_ipv6: false 6 7nginx_vhosts: 8 - listen: "443 ssl" 9 filename: ps.zakroma.internal.443.conf 10 server_name: "*.ps.zakroma.internal" 11 extra_parameters: | 12 ssl_certificate /opt/certs/zakroma.crt; 13 ssl_certificate_key /opt/certs/zakroma.key; 14 location / { 15 proxy_buffering off; 16 proxy_set_header Host $http_host; 17 proxy_set_header X-Forwarded-Scheme $scheme; 18 proxy_set_header X-Forwarded-Proto $scheme; 19 proxy_set_header X-Forwarded-For $remote_addr; 20 proxy_set_header X-Real-IP $remote_addr; 21 22 proxy_pass http://127.0.0.1:{{ zakroma_storage_gateway.s3api_port }}; 23 add_header x-forwarded-path $request_uri; 24 } 25 26 - listen: "443 ssl" 27 filename: zakroma-admin.zakroma.internal.443.conf 28 server_name: "zakroma-admin.zakroma.internal" 29 extra_parameters: | 30 ssl_certificate /opt/certs/zakroma.crt; 31 ssl_certificate_key /opt/certs/zakroma.key; 32 location / { 33 proxy_set_header Host $http_host; 34 proxy_set_header X-Forwarded-Scheme $scheme; 35 proxy_set_header X-Forwarded-Proto $scheme; 36 proxy_set_header X-Forwarded-For $remote_addr; 37 proxy_set_header X-Real-IP $remote_addr; 38 39 proxy_pass http://127.0.0.1:{{ zakroma_storage_gateway.management_port }}; 40 add_header x-forwarded-path $request_uri; 41 }

Если используются другие имена доменов, пути сертификатов или порты, замените значения в server_name, filename, ssl_certificate, ssl_certificate_key и proxy_pass.

Запуск playbook

Запустите playbook установки Nginx для нужной конфигурации:

1ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-zakroma-storage-nginx.yml

Для мультикластера используйте inventory конкретного кластера:

1ansible-playbook -i inventories/multicluster/cluster-1/hosts playbooks/sample-play-zakroma-storage-nginx.yml 2ansible-playbook -i inventories/multicluster/cluster-2/hosts playbooks/sample-play-zakroma-storage-nginx.yml

После выполнения проверьте состояние сервиса:

1systemctl status nginx 2nginx -t