本文详细介绍了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会解决。
服务器{}监听的是谁的端口?
被监控的是推回http请求的进程(大多是电脑浏览器)的端口(如果是http请求的话端口80)不是nginx网络服务器自己进程的端口。
nginx根据http请求头的Host字段中的值和推回http请求的进程的端口(大部分是电脑浏览器),决定使用哪个服务器{}来解析http请求。
文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)