Nginx перенаправляет на основной домен с поддомена без изменения URL в адресной строке

У меня есть домен и поддомены с подстановочными знаками.

main domain: example.com
subdomains: s1.example.com, s2.example.com etc.

Теперь требования:

s1.example.com будет перенаправлен на example.com/organization/s1

s2.example.com будет перенаправлен на example. com/organization/s2

и Для s1.example.com или s2.example.com моя конфигурация такова:

    upstream frontend {
       server example.com;
    }  

    server_name ~^(?<name>.+)\.example\.com$;

    location / {

    proxy_pass http://frontend;
    rewrite ^/$ /organization/$name break;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host example.com;
    proxy_cache_bypass $http_upgrade;
    }

Теперь я не уверен, чего мне не хватает в моей конфигурации.

0
задан 11 June 2020 в 13:02
1 ответ

Это должно работать (не проверено):

  server_name: *.example.com
    location / { 
        if ($host ~* (.*)\.domain\.com) {
            set $sub_domain $1;
            return 301 $scheme://example.com/organization/$sub_domain;
        }
    }

или с помощью перезаписи:

  server_name *.example.com;
  set $subdomain $1;
  rewrite ^(.*)$ $scheme://example.com/organization/$1;

Думаю, лучше разделить конфиг поддомена (*.example.com) и основного домена (example.com). Если вы разделите его, вы не должны использовать proxy_pass в субдомене, потому что конфиг предназначен только для перенаправления без содержимого.

0
ответ дан 11 June 2020 в 10:29

Теги

Похожие вопросы