Nginx中的server_name指令主要用于配置基于名称的虚拟主机,server_name指令在接到请求后的匹配顺序分别为:

1、准确的server_name匹配,例如:

server {listen       80;server_name  domain.com  www.domain.com;...
}

2、以*通配符开始的字符串:

server {listen       80;server_name  *.domain.com;     ...
}

3、以*通配符结束的字符串:

server {listen       80;server_name  www.*;...
}

4、匹配正则表达式:

server {listen       80;server_name  ~^(?.+)\.domain\.com$;     ...
}

nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。

server_name指令一项很实用的功能便是可以在使用正则表达式的捕获功能,这样可以尽量精简配置文件,毕竟太长的配置文件日常维护也很不方便。下面是2个具体的应用:

1、在一个server块中配置多个站点:

server{listen       80;server_name  ~^(www\.)?(.+)$;index index.php index.html;root  /data/wwwsite/$2;}

站点的主目录应该类似于这样的结构:

/data/wwwsite/domain.com
/data/wwwsite/nginx.org
/data/wwwsite/baidu.com
/data/wwwsite/google.com

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

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

实际网站目录结构中我们通常会为站点的二级域名独立创建一个目录,同样我们可以使用正则的捕获来实现在一个server块中配置多个二级域名:

server{listen       80;server_name  ~^(.+)?\.domain\.com$;index index.html;if ($host = domain.com){rewrite ^ http://www.domain.com permanent;}root  /data/wwwsite/domain.com/$1/;}

站点的目录结构应该如下:

/data/wwwsite/domain.com/www/
/data/wwwsite/domain
.com/nginx/

这样访问www.domain.com时root目录为/data/wwwsite/domain.com/www/,nginx.domain.com时为/data/wwwsite/domain.com/nginx/,以此类推。

后面if语句的作用是将domain.com的方位重定向到www.domain.com,这样既解决了网站的主目录访问,又可以增加seo中对www.domain.com的域名权重。

server_name 同样也可以使用 ip进行匹配,以下是自己使用IP进行配置单的:

upstream web_app {server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;}server{listen 8093;#server_name 127.0.0.1:8093;server_name 192.168.47.128:8093access_log  logs/host.access.log  main;location /{proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_set_header Host  $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://web_app;expires    3d;}

Nginx中server_name 参数详解相关推荐

  1. BLAST+中blastn参数详解

    [转]BLAST+中blastn参数详解 2012-05-22 13:25 转载自  lidaof 最终编辑  lidaof 与之前的blast相比,新的blast+将blastn,blastx等合作 ...

  2. oracle安装过程中内核参数详解

    转载网址:https://www.cnblogs.com/colben/p/4120439.html 在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析. ...

  3. FFMPEG进阶系列03-ffmpeg转码专题(中)x264参数详解

    文章目录 概述 版本 Presets(预设) tune slow-firstpass Frame-type options(帧类型选项) keyint min-keyint no-scenecut s ...

  4. Android AVD创建及设置中各参数详解

    本文根据如下的模拟器安装做一些解释: 本文环境:Windows XP sp3,最新JAVa环境,android-sdk_r06-windows.zip,android 2.2 API Level 8, ...

  5. Random Forest算法中的参数详解

    本篇不是介绍RF的,关于RF网上有很多通俗易懂的解释 西瓜书与统计学习方法等很多教材中的解释也都足够 本篇仅针对如何使用sklearn中的RandomForestClassifier作记录 一.代码怎 ...

  6. struts2 action中result参数详解

    chain 用来处理Action链 com.opensymphony.xwork2.ActionChainResult dispatcher 用来转向页面,通常处理JSP org.apache.str ...

  7. OpenCV3中 HOGDescriptor 参数详解

    最近在做数字识别,需要用一些特征检测的方法,所以研究了一下hog特征以及opencv3中的实现. 首先我们进入HOGDescriptor所在的头文件"objdetect.hpp", ...

  8. plt.scatter 中cmap参数详解

    1.首先,cmap参数和c参数配合使用的.参数c可以是一个序列,如:plt.scatter(a,b,c=['b','r','b','r','b'],s=80) 此时c的序列是一个颜色序列,除了上述的简 ...

  9. nginx中斜杠(/)详解

    不知大家日常在nginx配置时,是不是会对是否加斜杠充满疑惑? 配置location.proxy_pass时,加"/"与不加"/"的区别,今天我们通过实操去验证 ...

最新文章

  1. Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突)
  2. MapReduce源码之InputFormat
  3. 汇编语言数据类型以及数据定义详解
  4. 计算机二级Office经验资源分享【一次过关。】
  5. 2.4.安装spaCy
  6. bzoj2500幸福的道路 树形dp+单调队列
  7. word2003怎么做目录与正文的连接
  8. 深度学习模型迁移到VisualC++ demo
  9. 苹果 macOS 系统键盘快捷键列表大全整理
  10. python pyhook_python使用pyHook.HookManager()返回来的event中,event.Time怎么转换成为datetime形式?...
  11. win10计算机禁用用户账户控制,win10用户账户控制怎么关闭_用户账户控制如何解除win10-win7之家...
  12. 问题1201:打印数字图形
  13. 大数据----2.基础环境搭建
  14. 使用ffmpeg进行视频文件转换成FLV整理
  15. 最全的Android/IOS等常用的WebService服务列表(本人整理)--值得收藏 留着说不定你就用到了
  16. MySQL:数据库压力测试报告
  17. 企业邮箱怎么申请?公司域名后缀的企业邮箱如何注册呢?
  18. 通信原理 简易QPSK、OQPSK、Π/4QPSK的功率谱的matlab实现
  19. 来自闪闪宝石的光芒 - “宝石迷阵” x 信息检索
  20. python金融实务从入门到精通_免费下载中-华尔街学堂:python金融实务从入门到精通,数据实战分析视频教程下载 价值599元...

热门文章

  1. 微生物组-宏基因组分析第9期(报名直播课免费参加线下2020.10本年最后一期)
  2. mysql内存爆_线上MySQL机器内存爆掉原因分析与解决
  3. R语言plotly可视化:plotly可视化分裂的分组小提琴图、每个小提琴图内部分为两组数据、每个分组占小提琴图的一半(Split violin plot in R with plotly)
  4. numpy使用np.argmax函数获取一维数组中最大值所在的索引(index of largest value in numpy array with np.argmax)
  5. seaborn使用violinplot函数可视化分组小提琴图(Grouped Violinplot with Seaborn violinplot)并保存可视化结果
  6. R语言使用ggplot2可视化凹凸图(bumps chart、凹凸图是一种特殊形式的线图,旨在探索随着时间的推移等级的变化)、并设置凹凸图的线条为曲线而不是直线(change into curves)
  7. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置、添加箱图、位置参数调整)实战
  8. Python裁剪图片(Crop an Image)
  9. 什么是信度分析(Reliability)?有哪些信度分析方法?那什么又是效度?
  10. R语言生存分析模型简介及survival包实现实战:基于survival包lung数据集