「Nginx」04节-反向代理与正向代理

前言

我们说过,Nginx是一款优秀的反向代理服务器。说到反向代理,其实还有一个概念“正向代理”,只不过正向代理用得较少,今天我们来说下两种代理模式。

「Nginx」04节-反向代理与正向代理

代理服务器

不管是正向代理服务器还是反向代理服务器,它都是代理服务器。

何为代理服务器?提供代理服务的电脑系统或其它网络终端,代替用户去获取网络信息的,我们就称之为代理服务器。

为什么要用代理服务器?

(1)、突破访问限制

当客户机存在访问受限时,可通过不受限的代理服务器访问目标站点,来变相访问受限网站。

(2)、提高访问速度

一方面代理服务器可以充当缓存服务器,像CDN本质上也是属于代理服务器的。

(3)、充当网络防火墙

代理服务器可以将后端服务器“隐藏”起来,减小了后端服务器直接暴露在公网上的风险。

正向代理

正向代理,简单说就像一个“跳板”,例如一个用户访问不了某网站(如:xx.com),但是他能访问一个代理服务器,而这个代理服务器可以访问(xx.com),那用户就可以先连上代理服务器,告诉它要访问的内容,由代理服务器将内容取回来返回给用户。

常用场景:VPN、翻墙工具、游戏代理其实就是利用正向代理的原理工作的,我们在本机也需要配置正向代理服务器的IP、端口等信息。

举个例子说明一下:

A想向C借钱,但是A和C闹翻了,所以A不好直接出面向C借钱,此时A找到B,让B向C借到了钱。A的目的达到了,而C不知道钱借给了A,它只知道钱借给了B。

正向代理的应用场景:

  • 访问原本受限的资源
  • 用作缓存,加速访问速度
  • 用作授权服务器,比如上网进行认证
  • 上网行为管理,代理可以记录用户访问记录

反向代理

反向代理是指用代理服务器来接受客户端请求,然后将请求转发给另外一个网络(也可以是同一个网络)上的服务器,并将从转发后的服务器上得到的结果返回给客户端,此时代理服务器充当的就是反向代理服务器。

举例来说,用户访问 http://xx.com/help ,而 xx.com 站点下并不存在 help 这个页面,它是从另外一台服务器上取回来的,然后作为自己的内容返回给客户端。客户端是不知道这个过程的。

说到这里,大家可能还是较迷糊的,我们再举个例子说明一下:

A向B借钱,但是B没有钱了,B就向C借了钱后再给A,A并不知道C的存在。

反向代理的应用场景:

  • 负载均衡
  • 缓存,减少服务器的压力
  • 保护内网安全

正向代理与反向代理的区别

(1)、代理对象不同

  • 正向代理:代理客户端,服务端不知道实际发出请求的客户端;
  • 反向代理:代理服务端,客户端不知道实际提供服务的服务端;

(2)、位置不同

  • 正向代理:架设在客户机和目标服务器之间;
  • 反向代理:架设在服务器端;

Nginx 反向代理配置

首先我们看下 nginx.conf 里需要用到的配置项:

(1)、location

location 配置项用作对请求URL进行匹配,前面章节我们介绍过,在此不详细介绍了。

(2)、proxy_pass

proxy_pass 后面跟着一个URL,用来将请求反向代理到URL参数指定的服务器上。

(3)、proxy_set_header

proxy_set_header 将指定头信息传递给后端服务器。

默认情况下,反向代理不会转发原始请求中的Host头部信息,如果需要转发,需要使用 proxy_set_header Host $host 来设置将Host参数及值传递给后端服务器。

演示

location = /bd/ {
proxy_pass https://www.webapp123.com/;
#proxy_redirect off;

#proxy_set_header Host $host;
}

我们访问:http://xx.com/bd/?wd=123 实际上访问的是 http://www.webapp123.com/?s=123


分享到:


相關文章: