Nginx技巧:灵活的server_name,Nginx配置一个服务器多个站点 和 一个站点多个二级域名

简介: http://www.cnblogs.com/buffer/archive/2011/08/17/2143514.html Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了。
+关注继续查看

http://www.cnblogs.com/buffer/archive/2011/08/17/2143514.html

Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了。
下面我就来说说server_name的使用吧:
server_name的匹配顺序
nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:
1、准确的server_name匹配,例如:
server {
listen 80;
server_name ssdr.info www.ssdr.info;
...
}

2、以*通配符开始的字符串:
server {
listen 80;
server_name *.ssdr.info;
...
}

3、以*通配符结束的字符串:
server {
listen 80;
server_name www.*;
...
}

4、匹配正则表达式:
server {
listen 80;
server_name ~^(?.+)\.howtocn\.org$;
...
}

nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。
server_name指令一项很实用的功能便是可以在使用正则表达式的捕获功能,这样可以尽量精简配置文件,毕竟太长的配置文件日常维护也很不方便。下面是2个具体的应用:
在一个server块中配置多个站点
server
{
listen 80;
server_name ~^(www\.)?(.+)$;
index index.php index.html;
root /data/wwwsite/$2;
}

站点的主目录应该类似于这样的结构:
/data/wwwsite/ssdr.info
/data/wwwsite/linuxtone.org
/data/wwwsite/baidu.com
/data/wwwsite/google.com

这样就可以只使用一个server块来完成多个站点的配置。

在一个server块中为一个站点配置多个二级域名

实际网站目录结构中我们通常会为站点的二级域名独立创建一个目录,同样我们可以使用正则的捕获来实现在一个server块中配置多个二级域名:
server
{
listen 80;
server_name ~^(.+)?\.howtocn\.org$;
index index.html;
if ($host = ssdr.info){
rewrite ^ http://www.ssdr.info permanent;
}
root /data/wwwsite/ssdr.info/$1/;
}

站点的目录结构应该如下:
/data/wwwsite/ssdr.info/www/
/data/wwwsite/ssdr.info/nginx/

这样访问www.ssdr.info时root目录为/data/wwwsite/ssdr.info/www/,nginx.ssdr.info时为/data/wwwsite/ssdr.info/nginx/,以此类推。
后面if语句的作用是将ssdr.info的方位重定向到www.ssdr.info,这样既解决了网站的主目录访问,又可以增加seo中对www.ssdr.info的域名权重。

多个正则表达式

如果你在server_name中用了正则,而下面的location字段又使用了正则匹配,这样将无法使用$1,$2这样的引用,解决方法是通过set指令将其赋值给一个命名的变量:
server
{
listen 80;
server_name ~^(.+)?\.howtocn\.org$;
set $www_root $1;
root /data/wwwsite/ssdr.info/$www_root/;
location ~ .*\.php?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwsite/ssdr.info/$fastcgi_script_name;
include fastcgi_params;
}
}

 
 
目录
相关文章
|
1月前
|
缓存 负载均衡 NoSQL
山东布谷科技直播软件源码Nginx服务器横向扩展:搭建更稳定的平台服务
Nginx服务器横向扩展提高了[直播软件源码](https://developer.aliyun.com/article/1302799?spm=a2c6h.13148508.setting.15.65934f0e6yi0Cp)性能,使直播软件源码平台性容错性、负载能力、处理高并发能力等能力有了极大地提升,确保了平台向着更高心梗、更稳定的方向发展,并且这样,使用户的体验大大增加,增加用户黏性,增多了用户的数量。
山东布谷科技直播软件源码Nginx服务器横向扩展:搭建更稳定的平台服务
|
1月前
|
JavaScript 应用服务中间件 开发工具
Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程(下)
Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程(下)
68 0
|
1月前
|
资源调度 JavaScript 前端开发
Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程(上)
Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程
166 0
|
1月前
|
JavaScript 应用服务中间件 nginx
Vue 发布服务器(Nginx)后访问路由报错 404
Vue 发布服务器(Nginx)后访问路由报错 404
38 0
|
1月前
|
缓存 前端开发 JavaScript
PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构)
PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构)
44 0
|
2月前
|
应用服务中间件 网络安全 nginx
Nginx 服务器安装SSL证书
Nginx 服务器安装SSL证书
86 0
|
2月前
|
安全 Unix 应用服务中间件
安装Nginx服务器,并添加SSL模块
安装Nginx服务器,并添加SSL模块
37 0
|
2月前
|
应用服务中间件 nginx
Nginx动静分离 访问服务器中静态资源
服务器中新建一个data文件夹,文件夹中新建两个文件夹,一个www,里面放一个HTML文件 一个image,里面放一个图片。
|
3月前
|
域名解析 网络协议 应用服务中间件
使用 Nginx 在服务器上搭建一个 Xooxle 镜像站
期望能够通过 `xooxle.example.com` 访问 `www.xooxle.com`,配置地址:「DNS 解析 DNSPod」->「域名」->「解析」->「添加记录」。
69 0
使用 Nginx 在服务器上搭建一个 Xooxle 镜像站
相关产品
云迁移中心
推荐文章
更多