server
{
listen 80;
server_name lvyehao.com;
index index.html index.htm index.php;
# 设置子域名目录
set $doc "lvyehao.com";
if ($host ~ ^(\w+)\.lvyehao\.com) {
set $doc $1;
}
# 设置此时域名对应的root
root /www/wwwroot/$doc;
error_page 404 /404.html;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /www/wwwlogs/access.log;
}
include /www/server/panel/vhost/nginx/*.conf;
}
注意点:
- DNS添加的是cname的解析记录指向当前服务的IP
- 由于我主域名放的是我另一个资源 lvyehao.com,所以我 $doc 初始值为 "lvyehao.com",否则为 "" 即可
- if 为匹配规则,root 为服务器对应路径资源,我资源都放在 /www/wwwroot/ 的目录下,大家根据自己服务器真实路径进行配置即可
这段nginx配置的作用是根据请求的域名设置对应的子域名目录,并将此时域名对应的root设置为/www/wwwroot/$doc
。
具体分析如下:
-
set $doc "lvyehao.com";
这行代码定义了一个变量$doc
,初始值为"lvyehao.com"。 -
if ($host ~ ^(\w+)\.lvyehao\.com) {
这行代码使用正则表达式匹配请求的域名,如果域名满足^(\w+)\.lvyehao\.com
的格式,则进入if语句。 -
set $doc $1;
这行代码将匹配到的第一个子模式(\w+)的值赋给变量$doc
。注意,使用了括号将子模式包裹起来,并使用$1引用子模式的值。 -
root /www/wwwroot/$doc;
这行代码将变量$doc
的值拼接在/www/wwwroot/
后面作为请求的根目录。
综合起来,这段配置的作用是根据请求的域名,设置对应的子域名目录,然后将请求的根目录设置为/www/wwwroot/$doc
。例如,如果请求的域名为test.lvyehao.com
,则将根目录设置为/www/wwwroot/test
。