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

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;
}
}

时间: 2024-12-14 22:41:51

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

Apache 配置多站点访问「为项目分配二级域名」

一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的 而二级域名(image.baidu.com)是基于一级域名延伸出来的,所以只要你购买了一级域名,二级域名是可以任意配置的 其实(www.baidu.com)也是二级域名,只是大家已经习惯使用www为前缀的二级域名作为网站的主域名入口而已 通过DNS解析服务商,可以为每个二级域名绑定不同的主机IP,这样即使只有一个主域名也可以架设多个网站了 如果你只有一台主机,并且要在上面建立多个项目,还得通过子域名的方式访问,那么你需要配置

Nginx反向代理实现负载均衡配置图解

[导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. 首先简单的介绍下nginx作为反向代理实现负载均衡.反向负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. 首先简单的介绍下nginx作为反向代理实现负载均衡. 反向代理方式是指以反向代理服务器来接受互联网上的连接请求,然后将请求转发给内

Nginx 1.10.1 版本nginx.conf优化配置及详细注释

Nginx 1.10.1 的nginx.conf文件,是调优后的,可以拿来用,有一些设置无效,我备注上了,不知道是不是版本的问题,回头查一下再更正. #普通配置 #==性能配置#!异常配置 #运行用户 user nobody; #pid文件 pid logs/nginx.pid; #==worker进程数,通常设置等同于CPU数量,auto为自动检测 worker_processes auto; #==worker进程打开最大文件数,可CPU*10000设置 worker_rlimit_nofi

iOS中有关配置 Apache 服务器的详细步骤

配置 Apache 服务器 目的: 能够有一个测试的服务器,Apache 服务器是免费的! 为什么是 Apache 使用最广的 Web 服务器 Mac自带,只需要修改几个配置就可以,简单,快捷 有些特殊的服务器功能,Apache都能很好的支持 例如:HTTP PUT/DELETE 操作,知识补充涉及的 HTTPS 服务 准备工作 设置用户密码 配置 配置服务器的工作 在 Finder 中创建一个 Sites 的文件夹,直接创建在 /Users/apple(当前用户名)目录下 修改配置文件中的两个

租一个服务器多少钱租一个服务器要多少租一个香港服务器多少钱一个月

租一个服务器多少钱 租一个服务器要多少钱 租一个香港服务器多少钱一个月 没有性价比更高的配置:香港服务器 双核 4G内存 独享国际带宽5M 399元 L5640 12核 8G内存 独享国际带宽5M 899元 E5 2670 16核 8G内存 独享国际带宽5M 1200元 QQ: 2727453595 很多站长在租用服务器的时候会问或者搜索一个网站租赁服务器需要多少钱?其实这是一个很难回答的问题,因为租用服务 器不和买手机一样,哪个牌子的.什么配置的多少钱都有明确规定,服务器租用价格受影响的因素有

FastDFS + Nginx 反向代理缓存 安装与配置

FastDFS + Nginx 反向代理缓存 安装与配置 作者:斯巴达克斯 时间:March 26, 2015 分类:存储 操作系统 CentOS release 6.5 (Final) 64 nginx相关软件 nginx-1.4.7 下载地址: http://nginx.org/en/download.html#nginx清除缓存模块 ngx_cache_purge-2.1 http://labs.frickle.com/nginx_ngx_cache_purge/pcre-8.36 ftp

Nginx 泛解析配置请求映射到多端口实现二级域名访问

由于想实现一个域名放置多个应用运行的目的,而不想通过域名后加端口号方式处理,这种方式处理记起来太麻烦,偷懒党简直不能忍,故而考虑了使用二级域名来处理多个应用同时运行.Google了一番资料并进行了尝试后,进行了总结. 文章开始之前先来理解一下二级域名的概念. 二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称:在国家顶级域名下,它是表示注册企业类别的符号.我国在国际互联网络信息中心(Inter NIC) 正式注册并运行的顶级域名是CN,这也是我国的一级域名.在顶级域名之

nginx负载均衡以及反向代理配置

记录一下方便以后自己查看 1.环境准备 lb-01:192.168.33.135 nginx-lb centos7 rs-01:192.168.33.131 apache-web centos6.x rs-02:192.168.33.132 nginx-web centos6.x 2.环境安装 lb-01 安装nginx,配置nginx源 # cat /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.

Nginx状态信息(status)配置及信息详解

Nginx状态信息(status)配置及信息详解 nginx与php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助.为了后续的zabbix监控,我们需要先了解一下nginx的状态页. Nginx状态信息(status)介绍 Nginx软件在编译时又一个with-http_stub_status_module模块,这个模块功能是记录Nginx的基本访问状态信息,让使用者了解Nginx的工作状态.要想使用状态模块,在编译时必须增加--with-http_stub