nginx

https://segmentfault.com/a/1190000016653873#articleHeader11

https://zhuanlan.zhihu.com/p/63629321

反向代理解决跨域问题:我们前端在使用 vue-cli 这种脚手架工具开发时,经常会遇到跨域的问题,因为项目自身启动本地服务是需要占用一个端口的(而且肯定和服务端不是同源),所以必然会产生跨域的问题。在使用 webpack 做构建工具的项目中,经常会使用 proxyTable 代理实现跨域(具体实现自行百度)。之所以出现跨域是因为浏览器有同源策略的限制,但服务器是没有的同源策略的限制的。当我们本地服务(假设域名:http://172.16.40.209:8080)要请求目标服务器(假设域名:target.com)的资源的时候,我们不直接请求 target.com,而是请求本地服务自身 http://172.16.40.209:8080(这时是同源请求,不存在跨域),本地代理服务再将接口转发给 target.com(注意这时候是两个服务器直接的通信了,而不是客户端和服务器的通信,所以更不存在跨域),本地服务获取到目标服务器的响应数据之后通过再代理伪装成本地服务请求的返回值返回给客户端。

本地服务在浏览器向本地服务发起请求 --> 本地代理转发 --> 目标服务器 --> 响应数据后通过代理伪装成本地服务器请求的返回值 --> 浏览器接受到目标服务器的数据

https://segmentfault.com/a/1190000010197683>

正向代理与反向代理

无论是反向代理还是正向代理,其实都是代理,即是把服务器的数据,先到代理服务器,最后转发给客户端

区别在于客户端和真实服务器的感知,正向代理隐藏了客户端,反向代理隐藏了服务端

我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。

反向代理隐藏了真实的服务端,当我们请求一个网站的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,我们不知道,也不需要知道,我们只需要知道反向代理服务器是谁就好了,反向代理服务器会帮我们把请求转发到真实的服务器那里去。反向代理器一般用来实现负载平衡。