Nginx处理请求时的匹配规则是什么


本篇内容主要讲解“Nginx处理请求时的匹配规则是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx处理请求时的匹配规则是什么”吧!nginx 在收到一条请求时将先通过 server_name 匹配一个 server, 然后使用 server 中的 location 继续匹配.
匹配 server_name
在 nginx 中, server_name 决定了当收到一个请求后哪一个 server 会被使用. nginx 会使用请求头中的 host 字段与 server_name 进行匹配. 定义 server_name 时可以使用 完全名称、通配符名称、正则表达式名称, 它们的匹配顺序如下:完全匹配前通配符匹配, 即 *.example.org后通配符匹配, 即 mail.*正则表达式匹配如果没有匹配到结果, 将会使用 default_server 进行处理, 如果没有定义, 则第一个定义的为 default_server. 使用三个简单的 server 作为例子, 让他们监听 80 端口, server_name 分别设置为 *.org、*.net、*.com:
在上面的配置中, 默认的服务器为 第一个, 随便访问一个不存在的 server 将会返回 401. 不过 香港云主机可以使用 default_server 手动设置一个默认主机, default_server 设置在 listen 字段, 如下:
之后再匹配时, 未匹配到将会使用这个 server.
禁止访问
如果想要禁止一个没有携带 host 字段的请求, 可以定义如下 server:
server_name 定义为空字符串, 如果 host 字段为空或不存在, 将会匹配到这个 server, 然后返回 404 状态码.nginx 的444 状态比较特殊,如果返回 444 那么客户端将不会收到服务端返回的信息,就像是网站无法连接一样, 浏览器直接显示 502. 但是如果使用反向代理, 还是显示正常状态码如果想要禁止访问不存在的主机, 可以这样定义:
_ 在这里没有任何特别含义, 因为一个域名中不会出现 _, 所以不会与任何真实的域名相同, 使用其他非法字符是相同的道理.
同时匹配 ip 和 server_name
现在来看一下对于监听不同 ip 和不同 server_name 混合使用时是如何处理的:
在这个配置中, nginx 首先匹配 ip, 匹配到后再匹配它们的 server_name, 如果没有匹配到 server_name, 则使用到它们默认的 server. 举个例子, 如果一个域名为 www.example.com 的请求来自 192.168.1.1:80. 但是监听 192.168.1.1:80 的 server 只有两个, 这两个都不能匹配 www.example.com, 那么就使用这两个 server 中的默认主机, 由于没有使用 defualt_server 定义监听, 所以默认为第一个即 www.example.org 这个 server. 当然你可以定义 defualt_server:
匹配 location
在 nginx 匹配到一个 server 后, 就会通过 location 继续处理请求, 下面是一个示例:
nginx 首先会在所有的 location 中搜索 前缀进行匹配, 匹配到前缀后, 将按顺序匹配使用 正则表达式 定义的 location, 匹配到就结束, 如果没有匹配到, 则使用之前匹配到前缀的那个 location 进行处理, 下面是具体匹配的例子:一个 /x.gif 请求, 首先匹配到的前缀为 /, 然后使用剩下的 x.gif 跟 location 的正则去匹配, 先匹配到了 location ~*.(gif|jpg|png)$, 返回 402.一个 /x.pdf 请求, 由于 x.pdf 无法被匹配到, 所以使用 location / 进行处理.一个 /api/x.gif, 首先匹配到前缀为 /api, 然后使用剩下的 x.gif 跟 location 的正则去匹配, 先匹配到了 location ~*.(gif|jpg|png)$, 返回 402.一个 /api/x.pdf 请求, 由于 x.pdf 无法被匹配到, 所以使用 location /api 进行处理.到此,相信大家对“Nginx处理请求时的匹配规则是什么”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: 电脑蓝屏的原因及怎么修复

这篇“电脑蓝屏的原因及怎么修复”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“电脑蓝屏的原因及怎么修复”文章吧。蓝屏原因一:硬盘故障硬盘出现坏道的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/05 21:16
下一篇 07/05 21:16

相关推荐