Назад | Перейти на главную страницу

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;
    }

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

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

  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 в поддомене, потому что конфигурация предназначена только для перенаправления без содержимого.