We're sorry but nginx-community doesn't work properly without JavaScript enabled. Please enable it to continue.
开源社区
首页
文章
问答
专栏
文档
发现更多
软件下载
三方插件
技术支持
电子书
公开课
社区贡献榜
关于我们
登录
注册
#
暂无描述
关注标签
0人关注
文章
问答
排序
热门
最新
陶辉
发布于2020-05-19 14:23
HTTP请求是如何关联Nginx server{}块的?
Nginx是企业内网的对外入口,它常常同时对接许多应用,因此,Nginx上会同时监听多个端口、为多个域名提供服务。然而,匹配多级域名并不简单,Nginx为此准备了字符串精确匹配、前缀通配符、后缀通配符、正则表达式,当它们同时出现时,弄清楚HTTP请求会被哪个server{}下的指令处理,就成了一件困难的事。这是因为基于域名规范,请求匹配server{}配置块时,并不会按照它们在nginx.conf文件中的出现顺序作为选择依据。而且对于不支持Host头部、没有域名的HTTP/1.0请求和无法匹配到合适server{}的异常请求,我们都要区别对待。另外,为了加快匹配速度,Nginx将字符串域名、前缀通配符、后缀通配符都放在了哈希表中,该设计充分使用了CPU的批量载入主存功能。如果不了解这些流程,既有可能导致请求没有被正确的server{}块处理,也有可能降低了原本非常高效地哈希表查询性能。本文将沿着Nginx处理HTTP请求的流程,介绍一个请求是如何根据listen、server_name等配置关联到server{}块的。我们将从TCP连接的建立、Nginx从哪些字段取出域名、域
点赞
13
浏览
2.8k
发表文章
提问
社区达人
成为达人
陶辉
暂无个人介绍
关注
洪志道
暂无个人介绍
关注
皮皮鲁
暂无个人介绍
关注
加菲
暂无个人介绍
关注
lwl
暂无个人介绍
关注
相关文章
保持联系
微信公众号
加入微信群
获取商业支持
了解商业产品和专业支持服务
加入邮件列表
向开发组提交代码或反馈意见