nginx的请求处理(nginx处理http请求实现过程解析)
nginx的请求处理
nginx处理http请求实现过程解析nginx首先决定要用配置文件里的哪个server{}块来处理,假设有下面的server{}配置
server { listen 80; server_name aaa; ... } server { listen 80; server_name bbb; ... }
nginx会根据过来的http请求头里的Host字段里的值,来判断使用哪个server{}。
如果请求头里没有Host字段,或者Host字段里的值,和Nginx配置文件里的server{}里的{server_name}都不匹配,则使用第一个server{},来处理这个请求。
如果请求头里的Host字段里的值和Nginx配置文件里的某个server{}里的{server_name},匹配上了,则使用这个server{},来处理这个请求。
可以使用curl工具来方便的做实验,curl可以设置http请求的请求头,所以可以任意设置Host字段,用【-H】来设置。下面的10.210.65.73是安装了nginx的机器的IP地址。
所以用下面的命令,发送了http请求后,nginx就会使用server{server_name aaa}来处理这个请求。
curl.exe -H "Host: aaa" 10.210.65.73
非常重要的结论:server_name对应的是http请求头里的Host字段的值,有了上面的理论支撑,就可以很容易的设置反向代理和负载均衡:
当过来的http请求头里的Host字段为aaa时,storage.test来处理。
当过来的http请求头里的Host字段为bbb时,tracker.test来处理。
#负载均衡配置,IP为129的机器配置高,所以给他的数字的27,就是让它多处理 upstream storage.test { server 10.210.65.129:80 weight=27; server 10.210.65.130:80 weight=1; } #负载均衡配置 upstream tracker.test { server 10.210.65.52:80 weight=7; server 10.210.65.53:80 weight=2; } #文件的存储 server { listen 80; server_name aaa; location / { #http:://后面的内容是自己定义,对应上面upstream的名字 proxy_pass http://storage.test; } } #文件服务器tracker server { listen 80; server_name bbb; location / { #http:://后面的内容是自己定义的,对应上面upstream的名字 proxy_pass http://tracker.test; } }
server{}里的listen监听的是谁的端口?
监听的是:发送过来http请求的进程(大部分是浏览器)的端口(如果是http请求,则为端口为80),不是nginx服务器自己进程的端口。
nginx根据http请求头的Host字段里的值,和发送过来http请求的进程(大部分是浏览器)的端口,来决定使用哪个server{}来处理http请求。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
- nginx怎么设置域名访问网页(Nginx服务器如何设置url链接)
- nginx宝塔配置(宝塔面板安装云锁Nginx自编译web防护教程绝对有效)
- dockernginx服务器教程(Docker镜像+nginx 部署 vue 项目的方法)
- nginx虚拟主机配置推荐(nginx配置虚拟主机的详细步骤)
- nginx proxypass配置(nginx location中多个if里面proxy_pass的方法)
- nginx为什么要配置https(Nginx配置Https安全认证的实现)
- nginx优化分几种(Nginx优化服务之网页压缩的实现方法)
- nginx tomcat集群(Nginx+tomcat负载均衡集群的实现方法)
- nginx配置文件的几大模块(nginx简单配置多个server的方法)
- php nginx 底层执行流程(nginx/apache/php隐藏http头部版本信息的实现方法)
- windows下nginx负载均衡配置(使用nginx配置访问wgcloud的方法)
- centos7 离线安装nginx(centos8安装nginx1.9.1的详细过程)
- nginx https 域名配置(阿里云Nginx配置https实现域名访问项目图文教程)
- nginx最佳配置(nginx和lvs各自的优劣以及适合的使用环境)
- nginx学习需要哪些知识(一篇文章搞懂Nginx是什么,能干什么)
- nginx做转发配置weight啥意思(Nginx中break与last的区别详析)
- 彩礼重要吗()
- 写信告诉我今天海是什么颜色(写信告诉我今天海是什么颜色回答)
- 英语难学吗(法语比英语难学吗)
- 今天要吃什么(今天要吃什么菜好)
- 网红直播可以赚很多钱吗(网红直播可以赚很多钱吗)
- 今天是什么日子(今天是什么日子有什么特殊意义吗)
热门推荐
- mysql的默认隔离级别(再有人问你MySQL的隔离级别是什么,就把这篇文章发给他!)
- css设置3d效果代码(CSS 制作波浪效果的思路)
- jquery如何优化
- django操作默认数据库(Django数据库类库MySQLdb使用详解)
- docker运行镜像端口(docker镜像访问本地elasticsearch端口操作)
- html5导航栏怎么设计(html5 横向滑动导航栏的方法示例)
- phpmysql怎么搭建(PHP使用PDO、mysqli扩展实现与数据库交互操作详解)
- vue组件开发步骤(解析如何自动化生成vue组件文档)
- uni app 小程序全局样式没法用(uniapp封装小程序雷达图组件的完整代码)
- GridPanel中getSelectionModel
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9