Я пытался настроить 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