使用反向代理的http的请求流程
此文章主要为刚接触反向代理的小伙伴梳理请求流程,以便更好的理解反向代理是何时工作的
流程
- 由于浏览器是有缓存的,所以本地的hosts文件的信息也会在浏览器端缓存
- 当客户端发起一个新的请求(例如:输入的是域名www.uxuexi.com),请求会先在浏览器中查看是否有缓存的hosts信息,如果有直接拿来使用,如果没有会去使用所在操作系统的hosts文件的信息
- 在hosts文件上如果匹配到所输入的域名,那么此时请求就会被转发到对应的ip主机上;如果在本地hosts文件中没有匹配到,那么就会去公网DNS去匹配
- 请求跳到对应的ip主机后(A服务器),一般这个主机应该是nginx所在的主机,由于域名没有端口默认的就是80端口,所以此时nginx中如果配置了拦截80端口,那么这个请求就会被nginx给监听到,然后进入nginx中相应配置文件中
- 进入到nginx的相应的配置文件后会和对应的server-name匹配,然后找到匹配到的server-name对应的代理地址,在通过代理地址的名称找到对应的upstream
- 由于upstream中有响应的ip地址(B服务器)和端口,所以此时请求就会被转发到upstream的对应的ip主机(B服务器)上,
- 请求到达新的ip主机(B服务器)后,由于这个转发是带有端口的,所以这个端口就会被此主机(B服务器)上的应用程序监听到,比如tomcat
- 达到tomcat服务后有两种访问项目部署资源的情况:
- 项目部署位置不是tomcat默认位置

- 项目部署位置不是tomcat默认位置
- 项目部署位置是tomcat默认部署位置
如果这种情况,一般我们在输入域名或者直接输入ip地址端口的时候,后面还要加上项目名,这个项目名非常重要,因为tomcat要用这个名字去tomcat默认放置项目资源的文件夹下匹配资源。
- 此时如果你的项目没有问题,你应该能够看到你想要的内容了
使用反向代理的http的请求流程的更多相关文章
- nginx反向代理实现跨域请求
nginx反向代理实现跨域请求 跨域请求可以通过JSONP实现,缺点是需要修改被请求的服务器端代码进行配合,稍显麻烦通过在自己服务器上配置nginx的反向代理,可以轻松实现跨域请求 思路 示例服务器A ...
- JAVA获取客户端请求的当前网络ip地址(附:Nginx反向代理后获取客户端请求的真实IP)
1. JAVA获取客户端请求的当前网络ip地址: /** * 获取客户端请求的当前网络ip * @param request * @return */ public static String get ...
- Nginx应用-Location路由反向代理及重写策略 请求转发-URL匹配规则 NGINX Reverse Proxy
NGINX Docs | NGINX Reverse Proxy https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ ...
- .NET 反向代理 YARP 跨域请求 CORS
使用过 nginx 的小伙伴应该都知道,这个中间件是可以设置跨域的,作为今天的主角,同样的 反向代理中间件的 YARP 毫无意外也支持了跨域请求设置. 有些小伙伴可能会问了,怎样才算是跨域呢? 在 H ...
- IIS充当反向代理转发请求到Kestrel
接着上篇博文为ASP.NetCore程序启用SSL的code,这篇将介绍如何用IIS充当反向代理的角色转发请求到Kestrel服务器 介绍 与ASP.NET不同,ASP.netCore使用的是自托管w ...
- Squid 反向代理加速网站
本实例的域名是 wenjin.cache.ibm.com.cn,通过DNS的轮询 技术,将客户端的请求分发给其中一台 Squid 反向代理服务器处理,如果这台 Squid 缓存了用户的请求资源,则将请 ...
- 使用Nginx实现反向代理
一.代理服务器 1.什么是代理服务器 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务 ...
- [转]使用Nginx实现反向代理
使用Nginx实现反向代理 解释 正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问 ...
- Nginx+Php-fpm运行原理 代理与反向代理
一.代理与反向代理 现实生活中的例子 1.正向代理:访问google.com 如上图,因为google被墙,我们需要vpnFQ才能访问google.com.Virtual Private Networ ...
随机推荐
- [转]ztree出现$.fn.zTree is undefined错误的解决办法。
原文地址:https://blog.csdn.net/smallboy2011/article/details/20554269 问题描述,在一个界面使用ztree创建树,提示TypeError: $ ...
- java.util.concurrent介绍【转】
java.util.concurrent介绍 java.util.concurrent 包含许多线程安全.测试良好.高性能的并发构建块.不客气地说,创建 java.util.concurrent ...
- 用NextResult方法取得多个Result Set
http://dotnet.chinaitlab.com/ADONET/757364.html 从 ADO.NET 1.x 开始,DataReader 就可以在单一次的查询动作中,「批次 (batch ...
- swoole web服务
web.php <?php $http = ); $http->on('request', function ($request, $response) { var_dump($reque ...
- Oracle:使用nginx做为代理访问
nginx 必须启用 启用 --with-stream 模块. 可下载源码编译. nginx.conf的配置: worker_processes ; events { worker_connectio ...
- AES和RSA算法的demo代码
aes代码示例: package com.autoyol.util.security.test; import java.security.Key; import java.security.NoSu ...
- android bionic c 对比 gnu c
Bionic 是一个BSD标准的C库,用在android平台上面的. Android 是一个不完全开源的系统. android的kernel使用的是基于linux的,linux使用的是GPL2的开源标 ...
- windows下特殊字符无法用来命名
原则上可以利用键盘输入的英文字母.符号.空格.中文等均可以作为合法字符,但由于以下字符由系统保留它用,因此不能用在文件命名中: : / \ ? * “ < > | 注: ...
- day_6.21web框架编写
web框架都是相同,只需把某些东西改写!就可以为自己所用! 直接实现改写,补充东西!然后,就是输入一个路径,然后执行方法!!!! 更改路由,然后调用方法就好!
- Linux 更新vim
https://blog.csdn.net/linuxnews/article/details/52938583 https://blog.csdn.net/nzyalj/article/detail ...