我们将托管 30k+ 个域的静态备份副本,并希望设置目录结构并通过单个server {}
块动态提供该目录结构。我们希望避免因单个文件夹中的文件夹过多而导致的问题。
NGINX 中是否有子字符串函数或类似函数,我们可以使用它来基于主机名生成别名路径。
例子
location / {
set $letter substr($http_host, 0, 1);
alias /var/www/$letter/$http_host/;
}
这样 somedomain.com 就可以解析到该目录:
/var/www/s/somedomain.com/
也欢迎其他建议。
答案1
此案例记录在http://nginx.org/en/docs/http/server_names.html。
你可以这样做:
server {
server_name (?<domain>.+);
root /var/www/$domain;
}
所以,这里我们使用正则表达式捕获将域名放入$domain
变量中,然后将变量作为root
。
如果域名存在某种模式,您可以使用更精细的正则表达式。