网站的目录结构为:
# tree /home/wwwroot/landui.com
/home/wwwroot/landui.com
├── bbs
│ └── index.html
└── www
└── index.html
2 directories, 2 files
/home/wwwroot/landui.com为nginx的安装目录下默认的存放源代码的路径。
bbs为论坛程序源代码路径;www为主页程序源代码路径;把相应程序放入上面的路径通过;http://www.landui.com 访问的就是主页http://www.landui.com 访问的就是论坛,其它二级域名类推。
有2种方法,推荐方法一
方法一:
server {
listen 80;
server_name ~^(?<subdomain>.+).landui.com$;
access_log /data/wwwlogs/landui.com_nginx.log combined;
index index.html index.htm index.php;
root /home/wwwroot/landui/$subdomain/;
location ~ .php$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 7d;
}
}
方法二:
server {
listen 80;
server_name *.landui.com;
access_log /home/wwwlogs/landui.com_nginx.log combined;
index index.html index.htm index.php;
if ($host ~* ^([^\.]+)\.([^\.]+\.[^\.]+)$) {
set $subdomain $1;
set $domain $2;
}
location / {
root /home/wwwroot/landui.com/$subdomain/;
index index.php index.html index.htm;
}
location ~ .php$ {
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 7d;
}
}
另外: 如果是根据二级名称 分发到不同服务上
若是通配: *.xxxx.com 则需要配置 二级域名的名称获取:
set $subdomain '';if ($host ~* ^(.*?)\.mydomain.net) {set $subdomain $1;}
然后根据名称 方发到不同的服务:
# subdomain的值是根据二级域名正则匹配出来的
if ($subdomain ~* ^(bi|cd|doc)$) {
# 当subdomain匹配app1、app2或app3时,执行以下操作
proxy_pass http://192.1.4.6:8080;
}
if ($subdomain = git) {
proxy_pass http://192.1.4.7:8080;
}