Skip to content

一文搞懂 nginx 反向代理?

1.nginx 反向代理的理解

正向代理代理客户端,反向代理代理服务器。

nginx 反向代理的意思:就是代理内部服务器对外进行服务的 nginx 代理服务。

nginx 反向代理的反向性在于:Nginx 作为负载均衡服务时 Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP 代理服务对外进行服务。

反向代理的方向与正向代理相反,代表外部网络用户向内部服务器发出请求,即接收来自 Internet 上用户的连接请求,并将这些请求转发给内部网络上的服务器,然后将从内部服务器上得到的响应返回给 Internet 上请求连接的客户。

反向效果:对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。用户不需要知道目标服务器的地址,作为 Web 服务器的前置机来降低网络和服务器的负载,提高访问效率。(一定程度上可以提高安全性、隐私性)

理解:我们可以看到 nginx 代理服务器不仅代理了后端服务,也代理了前端页面,所以相当于是对于服务请求的一种统一化

img

2.正向代理和反向代理区别和理解

反向代理:统一代理服务器的服务(包括前后端),浏览器直接请求代理服务器(代理服务器里面的前后端访问不会发生跨域,因为是在一个服务器上面)就可以了 ——> 给服务器增加一个统一门户代理,浏览器直接访问代理服务器即可(代理了服务端)

正向代理:在客户端中代理客户端(给浏览器增加一个贴身侍卫),以便可以有权限地访问服务器 ——>给浏览器增加一个代理,然后再访问服务器(代理了客户端)

img

3.反向代理和正向代理解决跨域问题

跨域的常用解决方案:

  • jsonp:利用 script 标签可跨域的特点,在跨域脚本中可以直接回调当前脚本的函数。
  • cors:服务器设置 http 响应头中的 Access-Control-Allow-Origin 值,解除跨域限制。——>注意是针对响应头进行设置,让浏览器不会判定为跨域请求!
  • node 正向代理:脚手架中配置 proxy 代理就属于 Node 正向代理
  • nginx 反向代理:在 nginx 配置文件中进行配置