![nginx-将域名映射到文档根目录](https://linux22.com/image/742229/nginx-%E5%B0%86%E5%9F%9F%E5%90%8D%E6%98%A0%E5%B0%84%E5%88%B0%E6%96%87%E6%A1%A3%E6%A0%B9%E7%9B%AE%E5%BD%95.png)
我有几个域名和几个文档根目录,如下所示:
toto.exemple.com /var/www/exempleOne
titi.exemple.com /var/www/exempleTwo
[...]
基本上我想要做的是,对所有域仅使用一个服务器块/ vhost 文件。
我尝试使用 nginx map 来实现这一点,并执行以下操作:
map $host $docroot{
toto.exemple.com /var/www/exempleOne;
titi.exemple.com /var/www/exempleTwo;
}
server {
listen 80;
server_name _;
location / {
root $docroot;
expires 30d;
}
}
但它似乎不起作用,似乎 nginx 正在使用默认文档根目录(/etc/nginx/html/)。
答案1
您可以尝试使用$http_host
作为变量而不是$host
在中map
。
然后,您还可以使用其中的default
项目map
,并将其设置为某些默认值。
这样,我们就可以查看 nginx 是否对该root
语句评估了映射。如果 nginx 尝试从目录中获取数据default
,则意味着变量的map
使用存在问题。
如果它仍然从 nginx 默认root
目录获取,则意味着 nginx 没有正确评估此处map
。
我还建议将其设置root
在location /
块的外部。