Всем спасибо за помощь, Ваши советы реально помогли с моей задачей, конфигурация все-таки заработала. Выкладываю пример, может кому-то пригодится: #----------------------------------------------- upstream upstr_release_XXXX_X { ### Конфигурация балансировки. . . . }
### Конфигурация бэкендов, в данном случае их 3. server { listen unix:/tmp/nginx/nginx_release_XXXX_X.example1.org.socket; access_log off; location / { resolver 8.8.8.8 valid=30s; #Если сайт внутри сети нужно указать IP intranet DNS серверов resolver_timeout 5s; proxy_http_version 1.1; proxy_pass http://$backend.example1.org; proxy_set_header Host $backend.example1.org; } } server { listen unix:/tmp/nginx/nginx_release_XXXX_X.example2.org.socket; access_log off; location / { resolver 8.8.8.8 valid=30s; resolver_timeout 5s; proxy_http_version 1.1; proxy_pass http://$backend.example2.org; proxy_set_header Host $backend.example2.org; } } server { listen unix:/tmp/nginx/nginx_release_XXXX_X.example3.org.socket; access_log off; location / { resolver 8.8.8.8 valid=30s; resolver_timeout 5s; proxy_http_version 1.1; proxy_pass http://$backend.example3.org; proxy_set_header Host $backend.example3.org; } } #Определение префикса для подстановки его в имя сайта для бэкендов map $http_host $backend { default $http_host; "~^(?<release>[a-z0-9\-\.]+)\.example\.org$" $release; } ### Точка входа на балансере. server { listen example.org:80; server_name "~^(?<release>[a-z0-9\-\.]+)\.example\.org$"; access_log /usr/local/nginx/logs/nginx_release_XXXX_X.example.org.log; error_log /usr/local/nginx/logs/nginx_release_XXXX_X.example.org.error.log; location / { proxy_http_version 1.1; proxy_pass http://upstr_release_XXXX_X/; proxy_set_header Host $http_host; } } #--------------------------------------------- На бэкендах в конфигурации тоже фильтруется префикс и в зависимости от него в локации определяется физический путь к файлам сайта. Данная конфигурация удобна для разработки, например, если версия сайта часто обновляется, то достаточно только развернуть новую локацию на бэкендах и новый релиз сайта будет доступен, соответственно в имени сайта нужно изменить имя релиза. Например релиз называется так: release-2022.1 В этом случае единая точка входа на балансере будет выглядеть так: release-2022.1.example.org Локация на бэкендах будет такая: /release-2022.1 Пример конфигурации бэкенда: #-------------------------------- server { server_name "~(?<release>[a-z0-9\-\.]+)\.example1\.org$"; # subdomains processing if ($release = 'trunk') { set $root_folder trunk; } if ($release != 'trunk') { set $root_folder branches/$release; } if (!-d /usr/local/www/site/$root_folder) { return 404; break; } .... #-------------------------------- Posted at Nginx Forum: https://forum.nginx.org/read.php?21,295146,295175#msg-295175 _______________________________________________ nginx-ru mailing list -- nginx-ru@nginx.org To unsubscribe send an email to nginx-ru-le...@nginx.org