У меня есть 2 разные записи DNS. Один для domain.com
указывает на общедоступный IP-адрес (например, 93.184.216.34), а другой для local.domain.com
указывает на локальный IP-адрес (например, 10.0.0.2) для компьютеров в той же сети.
У меня есть следующая конфигурация для proxy_pass локального поддомена в «голый» домен, который, кажется, работает:
server {
listen 80;
listen [::]:443 ssl;
listen 443 ssl;
# ssl config here
server_name local.domain.com;
location / {
proxy_pass $scheme://127.0.0.1/;
set $non_local_host domain.com;
proxy_set_header Host $non_local_host;
proxy_redirect http://$non_local_host/ http://$host/;
proxy_redirect https://$non_local_host/ https://$host/;
}
}
Но мне также нужны поддомены для работы. foo.local.domain.com
должен проксировать на foo.domain.com
, а bar.baz.local.domain.com
должен проксировать на bar.baz.domain.com
Я понимаю, что мне нужно продублировать указанный выше серверный блок. Измените server_name
на *.local.domain.com
, но не знаете, как правильно установить $not_local_host
, чтобы он указывал на правильный субдомен.
Ближайшие похожие вопросы: подстановочный знак суб-поддомена nginx, но это было в противоположном направлении (и никогда не было ответа), и этот ответ на Как передать поддомен в качестве значения proxy_pass в nginx?, но для разных доменов (а не поддоменов) и это какое-то волшебное регулярное выражение, которого я не понимаю. Спасибо.