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

Поддомены Nginx и правила перезаписи

Я пытался настроить Nginx на то, что я сейчас настроил в Apache, но пока безуспешно.

Я хотел бы, чтобы http: //$1.$2.mas.example.com (где $ 1 и $ 2 - это любой поддомен) указывал на root со значением / home / webcontent / $ 1 / mas / $ 2 / html.

Есть предложения, как этого добиться?

Вот простой способ сделать это ... не так, как вы это изложили, а с использованием всего имени хоста в качестве каталога ... Я посмотрю глубже, может ли nginx делать то, что вы хотите. Я знаю это может

server {
    listen       80;
    server_name  _;

    location / {
        root   /tmp/$host;
        index  index.html index.htm;
    }
}

Это будет обслуживать контент, если вы нажмете http://host1.domain.com в /tmp/host1.domain.com/index.html

РЕДАКТИРОВАТЬ

Вот что ты хочешь сделать

server {
    listen       80;
    server_name  _;

    if ($host ~ (.*)\.(.*)\.domain.com) {
            set $myroot /tmp/$1/mas/$2;
    }

    location / {
        root $myroot;
        index  index.html index.htm;
    }
}

Начиная с nginx 0.7.40 вы можете использовать имена серверов регулярных выражений.

Таким образом, может работать следующее (непроверено):

server {
  listen 80;
  server_name ~^(\w+)\.(\w+)\.mas\.example\.com$
  root /home/webcontent/$1/mas/$2/html
}

Видеть http://nginx.org/en/docs/http/server_names.html#regex_names