Я сейчас в ситуации, когда мне нужно получить/поймать поддомен и передать это значение поддомена в proxy_pass в конфигурации Nginx.Как передать субдомен как значение proxy_pass в nginx?
например.
, если пользователь вводит
http://google.com.mydomain.com
, то он должен делать прокси проход, как
proxy_pass http://www.google.com/;
в приведенном выше примере является google.com
sub-domain
это может быть выполнимо? Как я могу достичь чего-то подобного в nginx?
В настоящее время я использую конфигурацию, где значения поддоменов жестко закодированы в конфигурационных файлах, но есть много поддоменов, поэтому мне нужно сделать это так, но не знаю правильного синтаксиса.
server {
listen 80;
server_name subdomain.domain.com;
charset utf-8;
location/{
proxy_pass http://www.subdomain/;
}
}
Я использую * как запись для перенаправления всех поддоменов на моем веб-хоста, то есть подстановочные DNS.
обновление:
я нашел фрагмент кода из https://stackoverflow.com/a/22774520/1642018
server {
listen 80;
# this matches every subdomain of domain.
server_name .domain.com;
location/{
set $subdomain "";
if ($host ~* "^(.+)\.domain.com$") {
set $subdomain $1;
}
proxy_pass http://$subdomain;
}
}
но запрос показывает мою страницу по умолчанию, которая находится в моем веб-корень по умолчанию.
Это похоже, что это может быть случай задачи XY: http://xyproblem.info/. Это необычный запрос. Почему бы просто не обслуживать субдомен? Что такое ситуация? Скорее всего, это гораздо лучшее решение, чем то, о чем вы думаете. – Dayo
@ Дайо благодарит за ваш ответ, я хотел использовать nginx в качестве обратного прокси для любого домена, который я хочу, поэтому, если я введу http: //ebay.com.mydomain. com он должен сделать прокси-пропуск на ebay.com и действовать как reverese proxy и получить страницу ebay.com. надеюсь это поможет. – AMB
Это не будет работать практически с любым доменом. Особенно с «большими», такими как google или ebay –