We're sorry but nginx-community doesn't work properly without JavaScript enabled. Please enable it to continue.
开源社区
首页
文章
问答
文档
软件下载
发现更多
三方插件
技术支持
电子书
公开课
社区贡献榜
关于我们
登录
注册
NGINX
负载均衡
JavaScript
NGINX Unit
Kubernetes
微服务
容器
NGINX系列
WAF
Node.js
Go(编程语言)
服务网格(Service Mesh)
HTTP/3_专栏
版本发布
#
暂无描述
关注标签
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从哪些字段取出域名、域
点赞
14
浏览
4.3k
发表文章
提问
社区达人
成为达人
陶辉
暂无个人介绍
关注
洪志道
暂无个人介绍
关注
皮皮鲁
暂无个人介绍
关注
加菲
暂无个人介绍
关注
lwl
暂无个人介绍
关注
相关文章
保持联系
微信公众号
加入微信群
获取商业支持
了解商业产品和专业支持服务
加入邮件列表
向开发组提交代码或反馈意见