Я пытаюсь настроить прокси-сервер Nginx для мультитенантного Saas с большим количеством пользовательских доменных имен. Я хочу создать блок сервера, который может обрабатывать следующие запросы, все как 301 постоянный:
http://custom -domain.com до https://www.custom -domain.com (custom-domain.com может быть любым заданным пользователем именем домена)
http://www.custom -domain.com до https://www.custom -domain.com (опять же, любое доменное имя)
http://.saas -domain.com to https://.saas-domain.com (saas-domain, com - это одно доменное имя для моей услуги)
В настоящее время я решаю эту проблему с помощью нескольких операторов If, но это выглядит странно, и я надеюсь на некоторую помощь более эффективным способом:
server {
listen 80 default_server;
location / {
# if 'www' redirect to https
if ($host ~* ^(www)) {
return 301 https://$host$request_uri;
}
# if '*.saas-domain.com' redirect to https://*.saas-domain.com
if ($host ~* ^(.*)\.saas-domain\.com) {
return 301 https://$host$request_uri;
}
# if not 'www' redirect to https and add 'www'
if ($host !~* ^(www)) {
return 301 https://www.$host$1 permanent;
}
}
}
Это лучший способ справиться со всеми моими сценариями? Я думаю, что сложность заключается в подстановке пользовательских доменов. Я обеспокоен накладными расходами в заявлении If. ТИА!