《精通Nginx》一2.5 虚拟server部分

2.5 虚拟server部分

任何由关键字server开始的部分都被称作“虚拟服务器”部分。它描述的是一组根据server_name指令逻辑分割的资源,这些虚拟服务器响应Http请求,因此它们都包含在http部分中。

一个虚拟服务器由listen和server_name指令组合定义,listen指令定义了一个IP地址/端口组合或者是UNIX域套接字路径。

listen address[:port];
listen port;
listen unix:path;

如表2-6所示,listen指令唯一地标识了在Nginx下的套接字绑定,此外还有一些其他的可选参数。

server_name指令是相当简单的,但可以用来解决一些配置问题。它的默认值为"",这意味着server部分没有server_name指令,对于没有设置Host头字段的请求将会匹配该server处理。这种情况可用于,例如,丢弃这种缺乏Host头的请求。

server {
    listen 80;
    return 444;
}

在这个例子中使用的Http非标准代码444将会使得Nginx立即关闭一个连接。

除了普通的字符串之外,Nginx也接受通配符作为server_name的参数。

  • 通配符可以替代部分子域名:*.example.com。
  • 通配符可以替代顶级域部分:www.example.*。
  • 一种特殊形式将匹配子域或域本身:
.example.com(匹配*.example.com也包括example.com)。

通过在域名前面加上波浪号(〜),正则表达式也可以被作为参数应用于se`javascript
rver_name。

server_name~^www.example.com$;
server_name~^www(d+).example.(com)$;

后一种形式是利用捕获,可以在以后引用中进一步配置(用$1,$2等)指令中使用。

对于一个特定的请求,确定哪些虚拟服务器提供该请求的服务时,应该遵循下面的逻辑。

1.匹配IP地址和listen指令指定的端口。

2.将Host头字段作为一个字符串匹配server_name指令。

3.将Host头字段与server_name指令值字符串的开始部分做匹配。

4.将Host头字段与server_name指令值字符串的尾部分做匹配。

5.将Host头字段与server_name指令值进行正则表达式匹配。

6.如果所有Host头匹配失败,那么将会转向listen指令标记的default_server。

7.如果所有的Host头匹配失败,并且没有default_server,那么将会转向第一个server的listen指令,以满足第1步。

这个逻辑体现在下面的图2-1中。

<span style='display:block;text-align:center'>
![1](https://yqfile.alicdn.com/0047ef16555a7c9b071d8cd674b0e338c4c7737c.png)

</span>

default_server被用于处理其他方式没有处理的请求。因此推荐总是明确地设置default_server,以便这些没有被处理的请求通过这种定义的方式处理。
时间: 2024-09-20 14:50:09

《精通Nginx》一2.5 虚拟server部分的相关文章

《精通Nginx》——2.5 虚拟server部分

2.5 虚拟server部分 任何由关键字server开始的部分都被称作"虚拟服务器"部分.它描述的是一组根据server_name指令逻辑分割的资源,这些虚拟服务器响应Http请求,因此它们都包含在http部分中. 一个虚拟服务器由listen和server_name指令组合定义,listen指令定义了一个IP地址/端口组合或者是UNIX域套接字路径. listen address[:port]; listen port; listen unix:path; 如表2-6所示,list

《精通Nginx》一第2章 配置指南

第2章 配置指南 精通NginxNginx的配置文件的格式非常合乎逻辑.学习这种格式以及如何使用每个部分是基础,这将有助于你手工创建一个配置文件.通过这一章的下列讨论话题将帮助你达到这个目的. 基本配置格式. Nginx全局配置参数. 使用include文件. Http的server部分. 虚拟服务器部分. location--在哪儿,什么时候,怎么样. mail的server部分. 完整的示例配置文件.

《精通Nginx》一导读

前 言 精通NginxNginx是一个高性能的Web服务器,在它的设计上使用的系统资源非常少.有很多how-to和示例配置文件在互联网上出现,这会澄清Nginx配置的浑水,这样做你将会学习到在各种环境中如何调整Nginx,以及一些配置模糊的选项的配置,以便设计一个符合你需求的配置文件. 在你已经理解了如何根据自己的需求来构建一个配置文件后,你就不再需要复制-粘贴配置片段了.这是一个过程,而且会有曲折,但是本书中有关技巧的解释,会使你觉得手写Nginx配置文件是一件很舒服的事情.万一事情不像你期望

《精通Nginx》——导读

https://yqfile.alicdn.com/6cd0578c578934e9a3d23073620e86c4cd5bf75a.png" > 前言Nginx是一个高性能的Web服务器,在它的设计上使用的系统资源非常少.有很多how-to和示例配置文件在互联网上出现,这会澄清Nginx配置的浑水,这样做你将会学习到在各种环境中如何调整Nginx,以及一些配置模糊的选项的配置,以便设计一个符合你需求的配置文件. 在你已经理解了如何根据自己的需求来构建一个配置文件后,你就不再需要复制-粘贴

Nginx提示:500 Internal Server Error错误的解决方法

  本文章来给大家总结了大量关于导致nginx中提示500 Internal Server Error错误的原因总结与解决方法分析有需要了解的朋友可参考参考 现在越来越多的站点开始用 Nginx ,("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形

《精通Nginx》一第1章 安装Nginx及第三方模块

第1章 安装Nginx及第三方模块 精通Nginx Nginx最初的设计是成为一个Http服务器,一个能够解决C10K问题的Http服务器.关于C10K这个问题,Daniel Kegel在http://www.kegel.com/c10k.html页面有具体描述,设计一个同时连接处理10000连接的web服务器.为了实现这个目标,Nginx通过基于事件的处理机制并且操作系统也要使用相应的事件机制,便可以解决C10K问题. 在我们开始探索如何配置Nginx之前,首先我们要安装它,这一章将详细讲述如

安装使用Nginx的状态监测模块server status

每日网站访问人数多了以后,势必会遇到服务器不稳定现象,比如http://www.aliyun.com/zixun/aggregation/17117.html">Web服务器没有响应了.很多时候很难找到原因.这时候监控Nginx服务器的状态变的很重要. 下面告诉你如何可以看到Nginx允许状态页面. 使用–with-http_stub_status_module 选项配置编译Nginx,然后 加入虚拟主机 下面内容:location /nginx_status {stub_status o

《精通Nginx》一2.7 mail的server部分

2.7 mail的server部分 mail服务部分,或者是mail的配置内容部分,仅在构建Nginx时使用了mail模块(--with-mail)才有效.这个部分控制了mail模块的所有方面. 作为mail模块允许配置影响代理邮件连接的所有方面,也可以为每个server指定.这个server也可以接受listen和server_name指令,这些指令我们在http server部分已经看过了. Nginx能够代理IMAP.POP3和SMTP协议,表2-9中列出了该模块有效的指令. 如果Ngin

《精通Nginx》——2.7 mail的server部分

2.7 mail的server部分 mail服务部分,或者是mail的配置内容部分,仅在构建Nginx时使用了mail模块(--with-mail)才有效.这个部分控制了mail模块的所有方面. 作为mail模块允许配置影响代理邮件连接的所有方面,也可以为每个server指定.这个server也可以接受listen和server_name指令,这些指令我们在http server部分已经看过了. Nginx能够代理IMAP.POP3和SMTP协议,表2-9中列出了该模块有效的指令. https: