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

Управляйте несколькими поддоменами с помощью nginx

Мне нравится обрабатывать разные поддомены на моем сервере Nginx, это мой файл конфигурации (частично)

server {
    listen                              80 default_server;
    listen                              443 default_server ssl;

    include                             ssl/mysite.conf;

    server_name                         default_server;
    rewrite                             ^(.*)$ https://mysite.com$1 permanent;

Как видите, все запросы к sub-domain.mysite.com/query являются перенаправлен к mysite.com/query всегда в https. Я хотел бы выполнить эту перезапись только в том случае, если субдомен отличается от строка1 и строка2. Так:

string1.mysite.com/query     --->   https://string1.mysite.com/query
foo.mysite.com/query         --->   https://mysite.com/query

Вы можете указать разные серверные блоки для разных имен хостов, например, AD7six.

В вашем случае я бы написал 2 серверных блока, один для string1.mysite.com и string2.mysite.com, а другой без фильтра server_name для соответствия всем остальным запросам.

Что-то вроде этого:

server {
    listen                              80 default_server;
    listen                              443 default_server ssl;

    include                             ssl/mysite.conf;

    rewrite                             ^(.*)$ https://mysite.com$1 permanent;
    ...
}

server {
    listen                              80;
    listen                              443 ssl;

    include                             ssl/mysite.conf;

    server_name                         string1.mysite.com string2.mysite.com;
    ...
}

Документация директивы server_name очень хороша и может помочь вам с такого рода проблемами. http://nginx.org/en/docs/http/server_names.html