nginx做反向代理处理http请求的过程
2014-09-13 09:58
399 查看
我用nginx作反向代理,代理到百度(www.baidu.com),测试时在本地修改了host文件。把www.baidu.com解析到nginx代理服务器(74.91.23.207)上
# vim /etc/hosts
下面看一下nginx的配置文件段 (其中:server 115.239.210.27 是百度的服务器地址)
接下来,在浏览器中输入 www.baidu.com ,发送一个Http请求,ping一下可以看到它是向74.91.23.207发送的请求。
那么请求到达74.91.23.207后,nginx是怎么处理的呢
看一下wireshark抓的包 (Fliter : ip.src == 192.168.100.11 && http.host =="www.baidu.com"&&http.request.method =="GET")
结合上面的GET包数据解释:
1.当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 www.baidu.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块,优先级这里就不再细说。)
2.此时我们可以看出HTTP请求匹配到了截图中的server_name,这样接下来nginx就会根据header中的Request URI字段进行与location匹配,如上面配置文件的截图所示,匹配到了 location / 。
3.接下来继续由nginx处理可以看到 proxy _pass http://rocdn ; 这就是进行反向代理处理,这个例子中使用的是nginx的upstream模块进行反向代理实现。
4.通过proxy _pass http://rocdn ; 中的 rocdn 可以找到对应的upstream块,然后,可以根据其中的server 115.239.210.27:80;再次进行代理请求,
此时发送的GET包内容:Host字段 and Request URI字段 都和上面一样,
5.当代理HTTP请求到达 百度的服务器:115.239.210.27后,若百度也是nginx,则服务器会对其进行类似上面的nginx处理HTTP请求一样,进行server_name 和 location匹配,并将相应的请求资源返回代理服务器。
6.Nginx反向代理服务器接收到百度服务器的返回资源后,再将其返回给客户端浏览器。
以上就是Nginx作反响代理时HTTP请求与处理的大致流程。
# vim /etc/hosts
下面看一下nginx的配置文件段 (其中:server 115.239.210.27 是百度的服务器地址)
接下来,在浏览器中输入 www.baidu.com ,发送一个Http请求,ping一下可以看到它是向74.91.23.207发送的请求。
那么请求到达74.91.23.207后,nginx是怎么处理的呢
看一下wireshark抓的包 (Fliter : ip.src == 192.168.100.11 && http.host =="www.baidu.com"&&http.request.method =="GET")
结合上面的GET包数据解释:
1.当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 www.baidu.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块,优先级这里就不再细说。)
2.此时我们可以看出HTTP请求匹配到了截图中的server_name,这样接下来nginx就会根据header中的Request URI字段进行与location匹配,如上面配置文件的截图所示,匹配到了 location / 。
3.接下来继续由nginx处理可以看到 proxy _pass http://rocdn ; 这就是进行反向代理处理,这个例子中使用的是nginx的upstream模块进行反向代理实现。
4.通过proxy _pass http://rocdn ; 中的 rocdn 可以找到对应的upstream块,然后,可以根据其中的server 115.239.210.27:80;再次进行代理请求,
此时发送的GET包内容:Host字段 and Request URI字段 都和上面一样,
5.当代理HTTP请求到达 百度的服务器:115.239.210.27后,若百度也是nginx,则服务器会对其进行类似上面的nginx处理HTTP请求一样,进行server_name 和 location匹配,并将相应的请求资源返回代理服务器。
6.Nginx反向代理服务器接收到百度服务器的返回资源后,再将其返回给客户端浏览器。
以上就是Nginx作反响代理时HTTP请求与处理的大致流程。
相关文章推荐
- nginx作反向代理时的HTTP请求处理全过程解释
- nginx作反向代理时的HTTP请求处理全过程解释
- Nginx中http请求的处理过程
- Nginx处理HTTP请求的路由过程
- 文章18 :Nginx中http请求的处理过程
- Nginx的HTTP请求处理
- nginx的反向代理搭建配置以及搭建过程中的一些思维发散
- tomcat 对http请求的处理过程
- 服务器端技术----Http请求的处理过程
- nginx安装过程,报错处理:make[1]: *** [objs/addon/src/bson.o] Error 1
- 【Nginx】HTTP请求的11个处理阶段
- nginx事件处理过程
- TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath
- Tomcat服务器t处理HTTP请求的过程
- Tomcat - 处理HTTP请求过程
- 文章13:Nginx多阶段处理HTTP请求
- Nginx多阶段处理HTTP请求
- TOMCAT原理以及处理HTTP请求的过程
- How nginx processes a request; Nginx处理一条请求的过程
- TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath