Nginx HTTP模块篇 server_name指令和Nginx处理HTTP请求的11个阶段(九)


从上一节我们知道,当nginx的HTTP模块解析完了请求报文中的请求行和请求头之后,就会进入处理HTTP请求的11个阶段。

不过在此之前,nginx要先找到是哪一个server配置块对这个请求进行处理。

 

server_name 指令 

该指令可以根据域名决定使用哪个server块的配置。

server_name上下文为http/server/location

server_name 后可以跟多个域名,第一个是主域名

示例:

server_name zbpblog.com www.zbpblog.com     # 指定主域名和www域名

server_name *.zbpblog.com       # 泛域名
server_name www.zbpblog.*       # 泛域名2,泛域名只支持*在最前面或者最后面

server_name ~^www\d+\.zbpblog\.com$;    # 使用正则,在server_name中可以在开头加~表示使用正则

# 使用分组匹配并创建变量
server{
    server_name ~^(www\.)?(\w+)\.com$;
    location / {
        root /var/www/$2;   # 如 www.zbpblog.com 就会指向 /var/www/zbpblog这个目录
    }
}

# 可以给分组匹配中的匹配内容用定义变量名(使用?<变量名>)
server{
    server_name ~^(www\.)?(?<domain>\w+)\.com$;
    location / {
        root /var/www/$domain;
    }
}

server_name .zbpblog.com        # 匹配zbpblog.com和*.zbpblog.com

server_name _       # 匹配所有域名
server_name ""      # 匹配没有Host头部的请求    


 

server匹配的优先级:
精确匹配 > *在前的泛域名 > *在后的泛域名 > 按顺序匹配正则域名 > default server

如果一个域名符合多个server_name定义的域名规则,则默认走第一个符合的server_name的server配置块。

default server就是http中listen指定为default的server块或者第一个server块。

 

HTTP处理请求的11个阶段

post_read       # 对应realip模块
server_rewrite  # 对应rewrite模块
find_config
rewrite         # rewrite模块
post_rewrite    
preaccess       # limit_conn,limit_req
access          # auth_basic,access,auth_request模块
post_access
precontent      # try_files模块
content         # index,autoindex,concat模块
log             # access_log模块

 

post_是在...之后的意思;pre是在...之前的意思。

每一个阶段都有0个到多个模块来处理HTTP请求,每一个模块处理完之后,会把请求往下一个模块传递。这个过程如下:

-->realip-->server级别的rewrite-->find_config-->location级别的rewrite-->limit_req-->limit_conn-->access-->auth_basic-->auth_request-->try_files-->mirrors-->concat-->random_index-->index-->auto_index-->static-->log

11个阶段中经过的模块

 

下一节开始,将介绍11个阶段中比较重要的模块。

本文转载自: 张柏沛IT技术博客 > Nginx HTTP模块篇 server_name指令和Nginx处理HTTP请求的11个阶段(九)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值