Я пытаюсь выполнить три задачи:
Моя конфигурация nginx пока что:
map $subdomain $subdomain_port {
default 8000;
www 8000;
subdomain1 8001;
subdomain2 8002;
subdomain3 8003;
}
server {
listen 80;
listen [::]:80;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name ~^(?P<subdomain>.+?)\.mydomain\.com$;
ssl_certificate <cert>;
ssl_certificate_key <key>;
location / {
# ... various proxy headers, then ...
proxy_pass http://127.0.0.1:$subdomain_port;
proxy_redirect off;
}
}
это почти работает (выполняет # 1 и # 3), но вместо перенаправления foo.mydomain.com
к www.mydomain.com
, это просто служит www
контент без перенаправления. Я не уверен, как перенаправить несопоставленные поддомены, не разбивая все это на отдельные server
блоки, которых я бы не стал делать.
Есть ли способ перенаправить все поддомены, явно не упомянутые на карте, на www
?
Просто чтобы сказать, что на AWS мне нужно было добавить запись A «* .staging.mydomain.com» в Route53, указывающую на тот же IP-адрес экземпляра EC2 (например, запись для «staging.mydomain.com»)
Просто создайте сервер по умолчанию. Вот мой
server {
listen 80 default_server;
server_name _;
return 302 https://www.example.com;
}
Вы можете делать все, что захотите.
Следующее работает для меня ...
Вот изменения в конфигурации Nginx, чтобы он работал ...
map $subdomain $subdomain_port {
default 8888;
www 8000;
subdomain1 8001;
subdomain2 8002;
subdomain3 8003;
}
server {
listen 8888;
server_name _;
return 301 https://www.domainname.com/$request_uri;
}
# other configs remain the same
Я использовал 8888 как порт по умолчанию. Любой неиспользуемый порт должен работать.