nginx重新整理——————http请求的11个阶段[十二]
2022/5/4 7:16:18
本文主要是介绍nginx重新整理——————http请求的11个阶段[十二],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
已经到了关键的http请求的11个阶段了。
正文
概念图:
11 个阶段的处理顺序:
那么就来介绍一下:
先来了解一下postread阶段的realip这个处理,realip 是 real ip,就是获取到连接的真实地址。
如何拿到真实的用户ip地址?
- tcp 连接四元组
这个不可靠,因为网络中可能存在很多的代理。
比如说:
-
http 头部x-forwareded-for 用于传递ip
-
http 头部 x-real-ip 用户传递用户ip
拿到后就放到了变量中:
如binary_remote_addr、remote_addr 这样的变量,其值就为真是的ip,这样做连接限制。
继续介绍一下rewrite 模块。
rewrite 可以这样写:
return code [text]; return code url; return url;
第一个就是状态码, 加上body 中返回的内容。
第二个就是code 加上url。
第三个就是之间返回url。
还有一种是error_page,这种意思就是这样的:
比如第一个例子,如果收到404,那么就从定向到404页面。
然后这里面看到上面有两个rewrite,一个是server rewrite 另一个是在 find_config 之后,也就是在location的rewrite。
而这个errorpage 也不是说location 继承了server的errorpage,而是说location 请求得到404后,server 对其进行了重置,是在请求之后的阶段。
rewrite 还有其他用法:
这个flag 是什么意思呢?有下面这些选项
--last: 用replacement 这个uri 进行新的location 匹配 --break: break 指令停止当前脚本指令的执行,等价于独立的break 指令。 --redirect: 返回302 重定向 --permanent 返回301
可能上面只有这个break 难以理解哈。
给个例子:
location /second{ rewrite /second(.*) /third$1 break; return 200 'ok'; } location /third{ return 200 'third'; }
如果有这个break,那么将会返回third。
如果没有将会返回ok。
然后还有一个rewritelog 这个默认是关闭的,这个如果开启了,那么就会打印出每一次重定向的日志。
下面结束if:
-
检查变量为空或者值是否为0,直接使用
-
将变量与字符串做匹配, 使用= 或者!=
-
将变量与正则表达式做匹配
大小写敏感, 或者!
大小写不敏感,~* 或者 !~* -
检查文件是否存在,使用-f 或者 !~f
-
检查目录是否存在,使用-d 或者 !-d
-
检查文件、目录、软链接是否存在,使用-e 或者!-e
-
检查是否为可执行文件,使用-x 或者!-x
实例:
结
这一届介绍了11个阶段,同时介绍postread 里面的realip 与 rewrite 阶段里面的 rewrite 模块。下一节介绍find_config 阶段。
这篇关于nginx重新整理——————http请求的11个阶段[十二]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享