Я пытаюсь сопоставить свои бэкенд-контейнеры NodeJS Docker с портами на субдомены.Для этого я пытаюсь настроить:
map $sub $prt {
include /var/www/ports.map;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /var/...;
ssl_certificate_key /var/...;
ssl_trusted_certificate /var/...;
server_name ~^(?P<sub>.+?)-api\.cnpgc\.embrapa\.br$;
location / {
add_header x-sub "$sub";
add_header x-prt "$prt";
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_ssl_session_reuse off;
proxy_pass http://localhost:$prt;
}
}
Однако, при попытке доступа, например, "cria-certo-api.cnpgc.embrapa.br" Я получаю ошибку "502 Bad Gateway".Если я изменю последнюю строку с
proxy_pass http://localhost:$prt;
на
proxy_pass http://localhost:9080;
Прокси работает нормально!Итак, ошибка возникает из-за наличия в URL переменной «prt».Это не имеет смысла.
Я отлаживаю свою карту со строками:
add_header x-sub "$sub";
add_header x-prt "$prt";
И это тоже работает.Любая помощь?