Настройка 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