Nginx的正向代理与反向代理详解

正向代理和反向代理的概念

代理服务(Proxy),通常也称为正向代理服务。

如果把局域网外Internet想象成一个巨大的资源库,那么资源就分布到了Internet的各个点上,局域网内的客户端要访问这个库里的资源就必须统一通过代理服务器才能对各个站点进行访问。

局域网内的机器借助代理服务访问局域网外的网站, 这主要是为了增加局域网内部网络的安全性,使得网外的威胁因素不容易影响到网内,这里代理服务器起到了一部分防火墙的功能。同时,利用代理服务器也可以对局域网外的访问进行必要的监控和管理。正向代理服务器不支持外部对内部网络的访问请求。

与正向代理服务相反,如果局域网向Internet提供资源,让Internet上的其他用户可以访问局域网内的资源,也可以设置一个代理服务器,它提供的服务就叫做反向代理(Reverse Proxy)服务。可以看到,反向代理服务与代理服务在功能逻辑上刚好是相反的。

正向代理服务器与反向代理服务器的概念很简单,归纳起来就是,正向代理服务器用来让局域网客户机接入外网以访问外网资源,反向代理服务器用来让外网的客户端接入局域网中的站点以访问站点中的资源。理解这两个概念的关键是要明白我们当前的角色和目的是什么,在正向代理服务器中,我们的角色是客户端,目的是要访问外网的资源;在反向代理服务器中,我们的角色是站点,目的是把站点的资源发布出去让其他客户端能够访问。

知道了这两个概念,就可以学习如何让Nginx服务器来提供代理和反向代理服务器了。

Nginx的正向代理服务  Nginx服务器正向代理服务的配置的3个指令

在实际应用中,使用Nginx服务器代理服务功能的情况相对少一些,Nginx代理服务本向也相对简单,涉及的主要指令不多。这些指令原则上可以出现在Nginx配置文件的http块、server块或者location块中,但一般是在搭建的Nginx服务器中单独配置一个server块用来设置代理服务。

1.resolver指令

该指令用于指定DNS服务器的IP地址。DNS服务器的主要工作是进行域名的解析,将域名映射为对应的IP地址。该指令的语法结构为:

resolver address ... [valid=time];

address,DNS服务器的IP地址。如果不指定商品号,默认使用53端口。

time,设置数据包在网络中的有效时间。出现该指令的主要原因是,在访问站点时,有很多情况使得数据包在一定时间内不能被传递到目的地,但是又不能让该数据包无期限地存在,于是就需要设定一段时间,当数据包在这段时间内没有到达目的地,就会被丢弃,然后发送都会接收到一个消息,并决定是否要重发数据包。

使用该指令的一个例子如下:

resolver 127.0.0.1 [::1}:5353 valid=30s

在实际应用中,一般不需要设置这么复杂,只要将DNS服务器的IP地址设置给该指令即可。

从Nginx1.1.7版本开始,该指令支持设置多个IP地址,从Nginx1.3.1开发版本和Nginx1.2.2稳定版本开始,该指令支持设置IPV6地址。

2.resolver_timeount指令

resolver_timeount time;

该指令用于设置DNS服务器域名解析超时时间,语法结果为:

3.proxy_pass指令

该指令用于设置代理服务器的协议和地址,它不仅仅用于Nginx服务器的代理服务器,更主要的是应用于反向代理服务,我们马上就会谈及。该指令的语法结构为:

proxy_pass URL;

其中,URL即为设置的代理服务器协议和地址。

在代理服务配置中,该指令的设置相对固定,因此在这里就不介绍其他细节了,具体内容在学习Nginx服务器的反向代理服务时再重点阐述。在代理服务配置中,该指令配置为:

proxy_pass http://$http_host$request_uri;

其中,代理服务器协议设置为HTTP,$http_host和$request_uri两个变量是Nginx配置支持的用于自动获取主机和URI的变量。配置代理服务时,一般不要改变该指令的配置。

 正向代理服务使用示例

..

server

{

   resolver 8.8.8.8;

   listen 82;

   location /

   {

       proxy_pass http://$http_host$request_uri;

   }

}

实现的片段很简单,设置DNS服务器地址为8.8.8.8,使用默认的53号端口作为DNS服务器的服务端口,代理服务的监听端口设置为82端口,Nginx服务器接收到的所有请求都由第5行的location块进行过滤处理。

Nginx服务器代理服务使用的场合不多,从上一节的配置指令来看,功能也相对简单。在使用过程中,有一些需要注意的事项在这里说明一下。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/cc35ad9c874a2f03153b68bc14463b1b.html