Nginx

正向代理与反向代理的解释:

总结:

  • 代理就是通过代理服务器进行访问

  • 正向代理是浏览器主动通过代理服务器访问

  • 反向代理是被动的,在“不知情”的情况下被转发到了其他端口去访问,常用于服务器的负载均衡。

透明代理

透明意味着代理本身对用户是不可见( invisible )的,也就是说用户侧不需要进行代理设置(区别于前向代理),请求的目标也是真实的服务器(区别于反向代理)。作为中间人,透明代理会拦截用户的请求,其常见的应用场景有:

  • 缓存请求的结果。透明代理缓存服务器的回应,这样之后重复请求到达时,直接回复给用户就好了,不用再将请求扔给服务器,这一点有没有让你想到 CDN ?

  • 过滤请求。也就是一些公司常常使用的行为管理功能,禁止掉员工对 QQ、weixin、炒股等网站的请求

跨域

  1. 没有反向代理的情况

    • 假设你有一个前端应用托管在 https://myapp.com,它需要访问后端API https://api.myserver.com

    • 直接从 https://myapp.com 发出对 https://api.myserver.com 的请求会构成跨域请求,因为协议和域名不同(或域名和/或端口不同)。

  2. 使用反向代理的情况

    • https://myapp.com 域下配置反向代理服务器,将所有对 /api 的请求转发到 https://api.myserver.com

    • 当前端应用想要调用API时,它会发送请求到 https://myapp.com/api。尽管这些请求实际上是由反向代理转发给 https://api.myserver.com 的,但从前端应用的视角来看,所有请求都是发送到它自己的源 https://myapp.com

    • 因此,浏览器认为这些请求都是同源的,不会触发跨域资源共享(CORS)的限制。

Q:为什么服务端不会拒绝来自代理服务器的请求呢?

  • 浏览器信任了代理服务器

Last updated