请求的 *** 作

请求的 *** 作,第1张

nginx处理http请求实现过程解析

本文详细介绍了nginx的http请求完成的全过程分析。原文根据示例代码非常详细,对大家的学习培训或者工作都有一定的参考价值,有需要的朋友可以参考一下。

Nginx首先决定要解决环境变量中的哪个服务器{}块,假设配备了下面的服务器{}。

server{ listen80; server_nameaaa; ... } server{ listen80; server_namebbb; ... }

Nginx会根据返回的http请求头中主机字段的值来区分应用哪个服务器{}。

如果请求头中没有主机字段,或者主机字段中的值与Nginx环境变量中服务器{}中的{server_name}不匹配,则应该应用第一个服务器{}来解决此请求。

如果请求头中主机字段的值与Nginx环境变量中某个服务器{}中的{server_name}匹配,则应该应用此服务器{}来解决此请求。

使用Curl专用工具可以方便地进行测试。curl可以设置http请求的请求头,所以可以随意设置主机字段,用[-H]来设置。底部的10.210.65.73是安装了nginx的设备的IP地址。

所以在用下面的指令推送http请求后,nginx会应用服务器{server_nameaaa}来解决这个请求。

curl.exe-H"主持人:美国汽车协会"

关键结果:server_name与http请求头中的Host字段的值相匹配。有了以上的基本理论支持点,建立反向代理和第三层交换机就非常容易了:

当返回的http请求头中的主机字段为aaa时,storage.test会解决它。

当返回的http请求头中的主机字段为bbb时,tracker.test会解决。

#三层交换机配备,IP为129的产品配置高,因此给他们的数据的27,便是让它多解决 upstreamstorage.test{ server10.210.65.129:80weight=27; server10.210.65.130:80weight=1; } #三层交换机配备 upstreamtracker.test{ server10.210.65.52:80weight=7; server10.210.65.53:80weight=2; } #文档的储存 server{ listen80; server_nameaaa; location/{ #http:://后边的內容是自身界定,相匹配上边upstream的姓名 proxy_passhttp://storage.test; } } #文件服务器tracker server{ listen80; server_namebbb; location/{ #http:://后边的內容是自身界定的,相匹配上边upstream的姓名 proxy_passhttp://tracker.test; } }

服务器{}监听的是谁的端口?

被监控的是推回http请求的进程(大多是电脑浏览器)的端口(如果是http请求的话端口80)不是nginx网络服务器自己进程的端口。

nginx根据http请求头的Host字段中的值和推回http请求的进程的端口(大部分是电脑浏览器),决定使用哪个服务器{}来解析http请求。

文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/774067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存