Nginx处理HTTP请求的路由过程
来源:互联网 发布:在哪里注册开淘宝店 编辑:程序博客网 时间:2024/05/18 03:41
选择server
Nginx的Worker进程首先获取HTTP请求的目的IP地址和端口号,然后扫描所有server配置,根据IP地址和端口号找到对应的server列表。接着Nginx根据请求的Host头字段和server的server_name(可以包括IP地址,比如192.168.0.6)匹配情况决定选择哪个server,选择的优先级如下:
1.完全匹配。
2.最长前缀匹配。
3.最长后缀匹配。
4.按配置顺序出现的第一个正则表达式匹配。
5.listen指令配置有default_server参数的server。
6.按配置顺序出现的第一个server。
使用下面的配置可以丢弃缺乏Host头的请求:
server {
listen 80;
server_name ""; //可以省略,因为server_name默认就是""
return 444;
}
Server names
通配符
通配符必须以"*"开头,或者以"*"结尾,而且前面或后面只能是".",比如*.example.com或者www.example.*。".example.com"表示example.com||*.example.com。
正则表达式
正则表达式以~开始,如果正则表达式中含有"{"或者"}",则必须加上引号:
server_name "~^(?<name>\w\d{1,3}+)\.example\.net$";
正则表达式中可以使用命名捕获组:
server {
server_name ~^(www\.)?(?<domain>.+)$;
location / {
root /sites/$domain;
}
}
server_name ~^(www\.)?(?<domain>.+)$;
location / {
root /sites/$domain;
}
}
server_name不支持匹配所有的名称(比如"*"),要实现该功能,可以使用server_name_in_redirect指令。
选择location
location [=|~|~*|^~] /uri/ {...}
location @name {...}
匹配规则如下:
1.如果存在=/uri/匹配该URI,则停止搜索并作为最佳匹配。
2.找到所有剩下的常规匹配中的最长匹配,如果该匹配使用^~前缀,就停止搜索并作为最佳匹配。
3.找到第一个匹配的正则表达式,如果存在,则停止搜索并使用该正则表达式作为最佳匹配。
4.如果3不存在,则使用2中找到的最长匹配。
注意:为了避免找不到匹配的location,可以在最后使用location / {...}匹配所有的URI。
0 0
- Nginx处理HTTP请求的路由过程
- Nginx中http请求的处理过程
- 文章18 :Nginx中http请求的处理过程
- nginx做反向代理处理http请求的过程
- Nginx的HTTP请求处理
- nginx处理http请求
- 服务器端技术----Http请求的处理过程
- tomcat 对http请求的处理过程
- Spring MVC 的http请求处理过程
- Tomcat处理一个HTTP请求的过程
- Tomcat处理一个HTTP请求的过程
- Nginx的请求路由规则
- Nginx 中处理 HTTP 请求
- nginx http处理请求入口
- nginx处理http请求流程
- Nginx源码剖析--HTTP请求的分阶段处理的初始化
- Tomcat - 处理HTTP请求过程
- 【Nginx】HTTP请求的11个处理阶段
- 426989
- Linux C第二课
- 104----oracle基本概念,启动,连接, 数据类型,常见案例,集合操作符
- 用 Python 进行数据分析,不懂 Python,求合适的 Python 书籍或资料推荐?
- AFNetworking 3.0 版本使用
- Nginx处理HTTP请求的路由过程
- cocos2d-x 3.x学习之拖动滑块类
- 数组指针和指针数组的区别
- JSP内置对象及其应用场合
- 在一个应用程序,如何监测一个service内部的数据的变化
- 第15周 啊哈算法 链表:用指针链表和数组模拟链表
- python学习——使用dict和set
- MapReduce2.0
- 105---oracle的 函数,转换函数, 分析函数, 表空间,系统用户, 权限和角色, 序列, 同义词, 索引,表分区,,,