Answers:
您可以使用正则表达式捕获子域,然后稍后在您的位置使用它。
server {
server_name ~^(?<sub>\.)?(?<domain>.+)$;
location / {
root /sites/$sub;
}
}
或者,最好将所有通用配置移动到另一个文件,然后在每个子域中创建服务器块并包含外部文件。
server {
server_name www.domain.com;
include /etc/nginx/sites-enabled/default.inc;
location / {
...
}
}
(重复其他服务器)
如果使用地图,则无需使用location指令。这是我能想到的最简单的解决方案。您可以根据$ http_host命名htpasswd文件,例如x.domain.com.htpasswd
。
map $http_host $auth_type {
default "off"; #This will turn off auth-basic
x.domain.com "Restricted"; #This or any other string will turn it back on
}
server {
auth_basic $auth_type;
auth_basic_user_file /etc/nginx/conf.d/$http_host.htpasswd;
}
allow
/ 强制执行IP限制deny
?
?
和<>
?我相信应该是server_name ~^(?<sub>\.)?(?<domain>.+)$;