我如何配置名为“projects”的单个文件夹,其中每个子文件夹都是子域?示例:我有站点example.com
在我的服务器上我有文件夹
/var/www/html/example.com
我创建了新文件夹:
/var/www/html/projects/
'projects'目录中的每个文件夹都是新的子域名:
/var/www/html/projects/site1 = site1.exapmle.com
谢谢
@ richard-smith,我在projects
中设置配置文件/etc/nginx/sites-available
,内容如下:
server {
listen 80;
root /var/www/html/projects/$domain;
index index.php index.html index.htm index.nginx-debian.html;
server_name ~^(www\.)?(?<domain>\.example\.com)$;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
} //而不是example.com我的domen名字。
在/etc/nginx/sites-enabled
创建符号链接并运行service nginx reload
。但在打开site1.example.com
之后。我得到"This site can’t be reached"
。但我的example.com
工作正常。
使用server_name指令中的正则表达式将允许您捕获子域的名称并在root
指令中使用它。
server {
server_name ~^(www\.)?(?<domain>\.example\.com)$;
root /var/www/html/projects/$domain;
...
}
有关更多信息,请参阅this document。
在我的情况下,我想匹配不包括'www'的子域名,文件夹名称只是子域名,这个语法对我有用。
server {
...
server_name ~^(?!www)(?P<domain>.+)\.example\.com$;
root /var/www/html/projects/$domain;
...
}
test.example.com
将使用根位置/var/www/html/projects/test