nginx正向代理与反向代理详解区别,nginx的正向代理和反向代理

nginx正向代理与反向代理详解区别,nginx的正向代理和反向代理,nginx正向代理与反向代理详解

本文和大家分享nginx实现正向代理和反向代理的具体方法配置,以及不同的例子。很详细,希望你能喜欢。

目录

正向代理nginx反向代理nginx反向代理02反向代理03反向代理04反向代理05反向代理06

正向代理

假设有一个内部网。

内网有两台机器,其中只有A能上网。

B不会上网,但是A和B是通过网络连接的。

此时,如果B想要访问外网,可以通过a向代理访问外网。

转发代理是模拟内网的目标服务器,发送内网其他机器的请求。

转发给外网真正的目标服务器。

因此,转发代理接受来自内部网中其他机器的请求。

相反的代理是反过来的。

也是内网,有几台机器,只有一台连接到外网。

但是,反向代理不接受来自内部网机器的访问请求。

反向代理接受来自外部网络的访问请求。

然后将请求转发给内部网中的其他机器。

在网络外发出请求的用户不知道反向代理服务器将请求转发给谁。

在一台机器上设置转发代理功能

如图所示,编辑一个nginx配置文件。

上图显示了配置文件的内容。

如果服务器被配置为转发代理服务器

那么这个虚拟主机配置文件必须是默认的虚拟主机。

因为所有访问该机器的网络请求都应该首先访问该虚拟主机。

因此,这里设置了default_server。

那么应该修改原来的默认虚拟主机配置文件名。

如图所示,修改default.conf配置文件的名称

这将取消原始的默认虚拟主机配置文件。

因为默认的虚拟主机配置文件是default.conf

配置文件中的解析程序119.29.29.29

这意味着配置一个dns地址

因为它是一个转发代理,在接受内部网请求的域名后

将请求发送到您真正想要访问的服务器。

但是内网发送的域名不包含ip地址。

因此,应该将域名发送到dns服务器来解析ip地址。

在获得ip地址之前,您不能将其转发到您想要访问的服务器。

所以您需要在这里配置一个dns地址。

接受内部网域名后,它会将域名发送到此dns进行解析。

可以根据图设置以下位置。

这样,在转发代理服务器接受内部网机器请求后

会将域名发送到配置好的dns进行解析,然后访问真正的服务器。

然后由真实服务器返回的内容被发送到发出请求的内部网机器。

nginx反向代理

做一个反向代理的例子。

如图所示,建立一个测试虚拟主机配置文件

监听端口8080,域名是www.test.com。

是根目录/data /data/wwwroot/test.com

通过访问虚拟主机显示的第一个页面文件是index.html。

如图所示,创建虚拟主机的根目录/data /data/wwwroot/test.com

然后用echo test.com_8080 !$/index.html

创建一个包含test.com_8080内容的首页文件。

该文件位于/data/wwwroot/test.com目录中。

如图所示,创建一个新的反向代理虚拟主机配置文件。

监控端口80,域名是www.test.com。

以下位置/是反向代理的配置。

当访问这个虚拟主机时,访问请求将被发送到127.0.0.1:8080。

如图所示,使用curl访问127.0.0.1:8080虚拟主机

成功返回Test.com_8080,表示可以访问此虚拟主机。

如图所示,创建另一个虚拟主机配置文件。

类似于前面的测试虚拟主机

但是该虚拟主机没有域名集。

设置位置返回的内容是8080默认字符串。

保存,重新加载nginx

还要取消测试虚拟主机的默认服务器设置。

现在127.0.0.1:8080对应两台虚拟主机。

一个是测试虚拟主机,另一个是8080默认虚拟主机。

两台虚拟主机的ip端口完全相同。

两者的区别在于测试虚拟主机有域名。

8080默认虚拟主机没有域名。

现在8080 default已经被设置为默认的虚拟主机。

所以如果你只访问127.0.0.1:8080

访问必须是8080默认虚拟主机。

如果要访问测试虚拟主机,需要添加测试虚拟主机的域名。

成功访问测试虚拟主机。

如图,可以看到访问curl 127.0.0.1:8080/返回的结果是8080默认。

使用curl-x 127 . 0 . 0 . 1:8080 www.test.com

有了这里的域名,返回的就是test.com_8080。

说明如果要访问测试虚拟主机,ip端口需要绑定域名。

如图所示,curl访问127.0.0.1:80域名www.test.com。

返回的是test.com_8080,表示这个反向代理成功了。

我们访问了端口80,但实际上返回了端口8080的虚拟主机的内容。

如图所示,反向代理虚拟主机中proxy_pass行以下的所有项目在这里都被注释掉了。

保存,重新加载nginx

如图所示,使用curl访问127.0.0.1:80域名www.test.com。

实际返回的值是8080默认值。

但是我们要访问的是测试虚拟主机。

如图,proxy _ set _ header Host $ host

这一行代码是为访问指定的域名。

上面设置了127.0.0.1:8080。

当代理反转时,它将指向此ip端口。

如果不设置主机,将只能访问127.0.0.1:8080的虚拟主机。

如果设置了host,它将指向绑定到指定主机的127.0.0.1:8080。

这里$host是系统变量,实际值是当前虚拟主机的server_name。

即www.test.com,什么是服务器名称,什么是主机值。

在这里设置主机相当于curl-x 127 . 0 . 0 . 1:8080 www.test.com。

如果此处未设置主机,则只能访问127.0.0.1:8080。

这样,域名就可以绑定到ip端口。

如图,除了写ip端口,proxy_pass还可以直接写域名。

这是www.123.com:8080/.

但这样一来,nginx就不知道域名指向哪里了。

所以需要在系统中绑定相应的ip。

比如在/etc/hosts文件中,写入对应的域名和ip进行绑定。

这样nginx中proxy_pass的域名系统就会解析出一个Ip地址。

然后访问这个ip端口。

以下proxy_header主机用于设置域名。

该域名将绑定到上面的ip端口进行访问。

如果上面的ip端口不是ip而是域名

和下面指定的域名没有冲突,因为上面写的域名的功能是解析ip。

下面指定的域名将被绑定到上面解析的ip端口。

这个例子使用$host,这是nginx全局变量。

这个变量实际上对应的是一个值,这个值就是当前虚拟主机server_name的值。

但一般来说,直接写ip口更方便。

以上是指定的ip端口。

下面指定了绑定到ip端口的主机域名

nginx反向代理02

如图所示,proxy_pass命令后面可以跟一个url

有三种格式,传输协议域名uri(访问路径)

传输协议ip端口uri

传输协议套接字

在这里,unix、http和https都是传输协议的类型。

域名uri、ip端口uri和套接字都是访问路径

套接字通常是程序的专用访问端口。

访问套接字就是访问特定的程序,所以不需要使用路径。

如图,在编写proxy_pass时,不同的编写方法有不同的结果。

例如,位置/阿明/

如果被访问的路径包含/阿明/

proxy_pass将在这里执行。

但是proxy_pass在location的不同写法会导致实际访问的路径不同。

执行proxy_pass是因为所访问的路径包含/naming/目录。

但是,实际的访问路径不一定包含/阿明/

这个例子是访问虚拟主机中的/阿明/a.html文件。

根据proxy_pass的不同写法,实际上会访问不同的路径。

如果ip端口后没有目录符号

我们会访问/阿明/a.html,这就是我们想要的。

如果ip端口后面跟有根符号/

然后你会直接访问根目录下的a.html文件,这显然是错误的。

ip端口后跟/linux/,然后将访问/linux/中的a.html文件。

如果ip端口后跟/linux和目录符号/

您将访问/linuxa.html。

所以如果你想正确访问/阿明/a.html

有两种写法。一种方法是不添加任何目录符号/

第二种是写ip端口/阿明/完全。

根据上面的例子,可以发现无论ip端口后面是什么目录

实际的访问路径将成为要访问的最终文件名的直接a.html。

直接添加到ip端口后面的目录中。

所以,如果ip端口后面没有写目录符号,系统会自己添加目录路径//阿明/a.html。

一旦任何目录符号存在,after将被直接放置在该目录符号之后。

第二种情况,ip端口/linux

实际结果是访问/linuxa.html。

这可能是因为linux没有跟上任何目录符号/

所以系统把linux当成一个未完成的文件名。

然后用linux直接粘贴文件名a.html。

这使得文件以/linuxa.html的形式被访问。

所以不管写什么路径,一定要跟上目录符号/

反向代理03

如图,proxy_set_header用于设置代理服务器可以接收的头信息。

例如,有三台计算机。

a是我们用来访问的计算机,我们从a发送访问请求。

B是反向代理服务器,B接收我们的访问请求。

c是反向代理服务器,也就是我们真正要访问的服务器。

b会将我们的访问请求转发给c。

如果没有设置proxy_set_header,B在向c转发请求时不会携带相应的头信息。

如果设置了该参数,则在转发请求时将获取相应的报头信息。

变量$remote_addr和$proxy_add_x_forwarded_for是nginx的内置变量。

$remote_addr变量保存B反向代理服务器本身的ip地址。

$proxy_add_x_forwarded_for变量存储客户端计算机a的ip地址。

如果没有设置这个变量,C服务器实际上不知道访问请求的真实源地址。

通过设置这个变量,C服务器可以知道访问请求来自哪个ip地址。

如图所示,编辑www.test.com虚拟主机的配置文件。

假设这个虚拟主机就是我们要访问的C服务器。

在位置上有两个echo来显示访问请求的源地址和真实源地址。

$remote_addr记录反向代理服务器的地址。

$proxy_add_x_forwarded_for记录了访问请求的真实源地址,也就是客户端的地址。

这样,在访问这个虚拟主机时,存储在这两个变量中的值就会显示出来。

保存,然后重新加载配置文件

如图,编辑反向代理服务器虚拟主机的配置文件。

如图所示,你可以看到里面的位置。

proxy_set_header X-Real-IP和proxy _ set _ header X-forwarded-for这两行被注释掉。

先做一个测试,保存并退出过载配置文件。

如图所示,使用curl test从192.168.133.140:80发出访问请求。

192.168.133.140这个ip实际上是客户端ip

因为访问请求是从这个ip发送的

但是测试后可以看到,实际显示的是两个127.0.0.1环回地址。

没有192.168.133.140这样的ip。

在这个测试中,反向代理服务器和真实服务器都在这台机器上。

因此,真实服务器C接收的访问请求的源ip是本地环回地址。

反向代理服务B向内部回送地址为127.0.0.1的真实服务器C发送请求。

因为这两台服务器都在这台机器上,所以这台机器上的程序之间的通信基本都是走127.0.0.1环回地址。

所以C的$remote_addr的值是127.0.0.1

因为反向代理服务器b中没有设置$proxy_add_x_forwarded_for。

因此,真实服务器C接收的$proxy_add_x_forwarded_for的变量值是发送请求的ip。

也就是127.0.0.1。

变量$proxy_add_x_forwarded_for实际上是从客户端开始的记录

请求总共传递了哪些ip地址的变量值,多个ip地址用逗号分隔。

如果发送的访问请求没有设置变量$proxy_add_x_forwarded_for

那么接收方这个变量的值正好是访问请求发送的最后一个ip,和remote_addr一样。

例如从A到B到c的访问请求

b如果设置了$proxy_add_x_forwarded_for

那么这个变量的格式就是a_ip,b_ip。

也就是记录了a的ip和b的ip。

如果中间有更多的服务器,它们的ip会被记录下来,用逗号隔开。

当然,每个代理服务器都需要设置变量$proxy_add_x_forwarded_for。

否则下一个代理服务器的变量$proxy_add_x_forwarded_for不会记录之前传递的ip。

只能记录最后一台服务器的ip。

所以在这个测试中,因为B没有设置$proxy_add_x_forwarded_for

所以C服务的变量$proxy_add_x_forwarded_for的值等于$remote_addr的值。

如图,对于第二个测试,编辑反向代理服务器b的配置文件。

删除位置中的X-Real-IP和X-Forwarded-For注释。

保存重载的配置文件。

如图所示再次测试。

可以看到返回的结果,第一行remote_addr的值是127.0.0.1。

这是代理服务器b的ip。

第二行的$proxy_add_x_forwarded_for的值是两个IP。

在curl命令中,访问请求从192.168.133.140发送。

即客户端a的ip是192.168.133.140。

b的Ip是127.0.0.1。

$proxy_add_x_forwarded_for记录对C的访问请求经过了哪个ip。

访问请求是从A到B,然后从B到c。

所以$proxy_add_x_forwarded_for变量记录了A的ip和b的ip。

因为访问请求在到达c之前要经过这两个ip地址。

所以以后做反向代理的时候,要设置这几行变量。

后面的真实服务器可以得到访问请求的真实ip地址。

反向代理04

如图,重定向应用的场景不多,主要有三种写法。

功能是修改代理服务器返回的位置和刷新头信息。

第一种方式,redirect是返回的头信息。

替换是要修改的信息

重定向将被更改为替换。

第二种写法是default,默认设置的意思。

第三个关闭意味着关闭重定向功能。

如图所示,测试并编辑代理服务器的配置文件。

测试成功需要满足几个条件。

首先,location后面只能跟根目录/没有别的。

第二个条件是proxy_pass后面的url不能跟/符号。

一般情况下是/ends结尾,但是这里不能用/ends

那么被访问的目录必须存在,如果不存在,可以创建一个。

然后你也可以在目录下创建一个index.html文件,在里面编辑一些字符串内容。

保存并重新加载配置文件。

如图所示,编辑代理服务器的配置文件。

以如图所示的简单格式编写。

保存重载的配置文件。

如图所示,在curl测试访问时,如果在阿明后面加上/end,将访问index.html文件。

但是我们想要访问的是目录本身,而不是其中的文件。

因此,在crul时,不能在访问地址的末尾添加/符号。

所以你可以进入阿明目录。

如您所见,对于永久重定向,返回的代码是301。

下面位置后面的字段是端口为8080的访问路径。

如图所示,编辑代理服务器的配置文件。

添加access _ log/tmp/456.log。

这样就打开了服务器的访问日志,通过查看访问日志可以更清楚的了解访问过程。

保存重载

如图,再次测试curl。在本测试中,阿明以/符号结尾。

通过cat检查/tmp/456.log访问日志。

发现日志信息没有主机和端口等信息。

在这种情况下,您可以在nginx.conf配置文件中修改格式配置。

如图所示,配置文件中log_format main的三行最初被注释掉了。

现在去掉注释,让这些行发挥作用。这是日志返回信息的格式设置。

如图,在最后添加两个nginx变量$host $server_port。

然后保存,退出,重新加载,这样这两个变量的信息就会添加到访问日志显示的信息中。

如图所示,编辑代理服务器配置文件,并添加access_log配置。

地址是/tmp/proxy.log。

之后添加main,因为nginx.conf中配置的格式是以main命名的。

这里添加main意味着使用名为main的格式来显示日志信息。

如图,access_log在同一个代理服务器上

您还需要在它后面添加main,以main格式显示日志信息。

拯救超载。

如图,curl测试它。该测试以/符号结束。

查看456.log后端服务器的日志,可以看到端口8080被访问。

查看proxy.log的代理服务器日志,可以看到端口80被访问。

网络码都是200,很正常。

如图,这次访问阿明的结尾没有/符号

你可以看到301被返回。

查看proxy.log也返回301。

如图,重新测试,检查两个日志。

查看301到200的日志信息。

简而言之,我们确认我们访问了端口80,并跳转到端口8080。

但是客户端无法访问端口8080。

如图所示,proxy_redirect可以用来解决这个问题。

这里是http://$主机:8080//;

这样,最初返回的8080端口信息可以通过写入删除。

保存重载

如图,复试。

如你所见,301被返回。

那么在location后面的地址中没有关于端口8080的信息。

反向代理05

Proxy_buffering表示缓冲

缓冲就是在内存中划出一个区域,将数据写入其中。

写入一定时间后,缓冲区中的数据将被写入硬盘。

这样做可以大大降低硬盘的读写频率。

如果不缓冲,每次生成数据都要读写硬盘,会给硬盘造成很大负担。

假设有三个对象,客户端A、代理B和代理c。

a发送请求,B接收请求并转发给c。

c将数据返回给B,然后B将数据发送给a。

这是一般的操作,但是如果A发出许多访问请求

或者有许多客户端发出访问请求。

那么对于代理服务器b和代理服务器c

每个请求都要按照这个流程处理一次,负担会很重。

Proxy_buffering是指在代理服务器b的内存中设置一个或多个缓冲区。

当缓冲区充满数据时,数据被转发到相应的客户端。

这样大大减少了代理服务器B的数据转发次数,减轻了负担。

当打开proxy_buffering时,proxy_busy_buffer_size决定何时将数据发送到。

在这个过程中,如果缓冲区满了,就有数据溢出。

额外的数据将被写入临时文件temp_file,该文件将被存储在硬盘上。

如果关闭proxy_buffering,C反馈的数据会直接从B转发到a。

并且不会发生其他操作。

如图,不管proxy_buffering是开还是关。

proxy_buffer_size选项有效,该参数用于设置缓冲区。

这个缓冲区存储服务器反馈回来的头信息。

如果设置不足以存储标题信息,将出现502错误代码。

所以建议设为4k。

如图所示,proxy_buffers定义了每个请求的缓冲区数量以及每个缓冲区的具体大小。

这里定义了8个4k,也就是说有8个缓冲区,每个缓冲区的大小都是4k。

那么总的缓冲区大小是8 * 4=32 K。

假设有10,000个请求,那么缓冲区就是8 * 10,000个缓冲区。

因为这个设置是针对每个请求的,而不是总共只有8个缓冲区。

proxy_busy_buffer_size定义了要向客户端传输多少数据。

这里定义了16k,所以当B的属于这个请求的缓冲区接收到16k的数据量时

会将数据转发给。

这里有八个缓冲区,总大小为32k。一般来说,缓冲器处于两种状态。

一个是接收数据,一个是发送数据,不可能同时接收数据和发送数据。

proxy_busy_buffer_size定义用于发送数据的缓冲区的大小。

因此,proxy_busy_buffer_size的大小应该小于缓冲区的总大小。

当接收的数据达到由proxy_busy_buffer_size设置的数据量时

这些缓冲器处于发送数据的状态,其余缓冲器处于接收数据的状态。

如果请求反馈的数据总量小于proxy_busy_buffer_size设置的值

然后B的接收完成会直接转发给a。

如果请求反馈的数据总量大于proxy_busy_buffer_size设置的值

然后当缓冲器接收的数据量达到由proxy_busy_buffer_size设置的值时

会先把这部分数据发给A。

如图所示,proxy_temp_path定义了临时文件存储目录。

例如,当A发出请求时,代理服务器B分配给A的缓冲区的总大小是32k。

但是C服务反馈给这个请求的数据量是100 MB,远远超过了缓冲区的大小。

这种情况下,当B接收到C的数据时,会有很多数据溢出缓冲区。

溢出的数据将首先保存到B硬盘上的临时文件中。

Proxy_temp_path定义存储该临时文件的路径以及子目录级别。

这里定义的路径是/usr/local/nginx/proxy_temp,这是一个目录名。

临时文件将存储在该目录中。

下面的数字1 2表示子目录级别。

之前的目录路径是我们自己定义的,子目录是系统自动创建的。

要创建多少子目录级别可以通过以下数字来设置。

比如只写1,表示子目录只有一层,子目录的名字是0-9。

根据定义,proxy_temp_path支持三级子目录,即可以写三个数。

比如write 1子目录的数量和命名方式是0- 9,共10个。

如果写2,从00到99有100个子目录,如果写3,从000到999有1000个子目录。

子目录的名称也是根据这些数字命名的。

如果写1/3,就说明子目录分两层。第一层是0-9,有10个子目录。

第二层是000-999 1000子目录,也可以反过来写3个1。

所以第一层是1000个子目录,每个目录下面的第二层有10个子目录。

proxy_max_temp_file_size定义临时文件的总大小。

例如,在这里将其设置为100M意味着每个临时文件最大为100M。

如果临时文件的数据被转移,它将被自动删除

Proxy_temp_file_write_size定义同时写入的临时文件数据的总大小。

这里定义了诸如8k或16k的值。

如果同时写入的数据量低于该值,则同时写入的数据量将会增加。

如果高于该值,则同时写入的数据量会减少。

因为同时写入的数据量太高,硬盘的IO负担太大,而太少的话硬盘的性能没有得到充分利用。

所以设置一个值不会太快也不会太慢,充分利用硬盘的性能而不会过载。

如图所示,这是一个使用proxy_buffering的例子。

首先设置为on状态,即缓冲功能开启。

存储的头文件的缓冲区为4k。

然后是两个其他数据的缓冲区,每个都是4k大小。

那么busy_buffers的数据量就是4k。

当接收的数据量达到4k时,Buffer将发送数据。

然后是临时文件的路径定义,定义了两层子目录。

它们是1 ^ 2,即第一层有0-9 ^ 10个子目录。

然后每个子目录下面第二层有00-99 100个子目录。

那么每个临时文件的大小是20M。

然后,临时文件同时写入的数据量定义为8k。

反向代理06

如图,要使用proxy_cache,必须先开启proxy_buffering功能。

proxy_cache是缓存函数。

如果客户端A请求的数据已经保存在代理服务器b的缓存中,则客户端A发出请求。

b会将相关数据直接发送给A,而不会向服务器c请求数据。

如果缓存功能没有打开,代理服务器B将请求服务器C为a的每个请求获取一次数据

如果A两次请求相同的数据,它也会向服务器c请求两次数据。

如果打开缓存功能,则第一次请求的数据已经保存在缓存中,如果第二次请求相同的数据。

b会直接从缓存中获取数据,而不是从C那里获取数据,这样就减轻了服务器C的负担。

总之,缓存可以减轻代理服务器B的负担,缓存可以减轻代理服务器c的负担。

如图所示,打开和关闭proxy_cache函数

Proxy_cache off表示关闭缓存功能。

proxy_cache区域是打开缓存,区域是缓存的名称。

缓存区的名称可以任意命名,如zone或123。

在这里写一个缓存名,就是用这个名字打开一个缓存。

从nginx 0.7.66版本开始,打开proxy_cache后

它还检测代理服务器的http响应头中的Cache-Control,Expire头字段。

如果cache-control的值为no-cache,则不会缓存请求的数据。

如图所示,curl -I一个网站请求数据

如您所见,返回的头文件信息位于Cache-Control之后的值中。

没有缓存,这意味着这个请求返回的数据不会被缓存。

如图所示,在某些情况下设置参数proxy_cache_bypass。

请求的数据不是从缓存中获得的,而是直接从后端服务器获得的。

这个参数后面的字符串通常是nginx的一些变量。

如proxy _ cache _ bypass $ cookie _ nocache $ arg _ nocache $ arg _ comment;

该设置意味着这三个变量的任何值都不为零或为空。

响应数据不是从缓存中获得,而是直接从后端服务器获得。

暂时很少用,了解一下就好。

如图,proxy_no_cache类似于上面的参数用法。

主要是设置在某些情况下,采集的数据不会被缓存。

示例proxy _ no _ cache $ cookie _ nocache $ arg _ nocache $ arg _ comment;

此设置意味着当以下三个变量中的任何一个的值不为0或空时

采集的数据不会被缓存。

如图所示,该参数的格式与上述参数类似。一般不需要设置,保持默认即可。

如图,proxy_cache_path是设置缓存区具体配置的参数。

除了内存中的空间,还可以在硬盘中留出一个空间用于缓存。

Path将指定一个目录路径作为缓存路径,缓存将存储在该路径中。

Levels=1:2这表示目录级别,第一个数字设置为第一级。

第二个号码设置为二楼。

1-9 A-F共16个字符,每个目录由一个字符组成。总共有16个目录。

2-9 A-F一共16个字符,但是每个目录由两个字符组成,00,01,04,2f等等,有两百多种组合。

简而言之,这个参数就是设置子目录级别,第一位数字代表第一级。

第二个数字表示二楼。

Keys_zone是设置存储区的名称和大小。

Keys_zone=my_zone:10m表示区域的名称是my_zone

那么该区域的大小是10MB。

非活动是删除缓存所需的时间。

例如,在图中将其设置为300秒意味着如果数据在300秒内没有被访问

那么这些数据将从缓存中删除。

Max_size是设置硬盘中缓存可以存储的最大数据量。

比如这里设置为5g,目录/data/nginx_cache/

这个硬盘上的目录最多可以存储5g数据,如果超过这个数量的话

系统会先删除最少访问的数据,然后再放入新数据。

proxy_cache_path行不能写入配置文件的服务器括号中。

写在http括号里。

例如,首先编辑nginx.conf配置文件。

如图所示,在服务器外部添加proxy_cache_path代码。

如图所示,

因为指定的缓存目录/data/nginx_cache/不存在,所以应该在这里创建。

如图,编译一个虚拟主机的配置文件,在location中添加proxy _ cache my _ zone

这样,当虚拟主机收到请求时,它将使用my_zone的缓存空间。

my_zone缓存空间的具体定义已经在nginx.conf配置文件中定义。

inx.conf中的配置内容对所有虚拟主机都有效。

所以如果在nginx.conf中定义了my_zone

然后在所有虚拟主机配置文件中使用proxy_cache my_zone。

这些虚拟主机都可以使用my_zone的缓存空间。

然后保存退出过载配置文件,它就会生效。

通常,您只需要添加两行代码就可以成功配置缓存。

如图,另一个问题是nginx服务本身的权限是没人的。

刚才的目录是用root权限创建的。

所以在这里,将缓存目录的所有者所属的组改为nobody。

这样nginx服务在操作这个目录的时候就不会出现权限问题。

见图/data/nginx_cache/目录内容。

可以看到0-9 A-F的一级目录。

0目录,可以看到由两位数字组成的二级目录。

综上所述,缓存空间配置主要是定义proxy_cache_path。

它可以在nignx.conf中定义,这样任何虚拟主机都可以使用它。

在定义了proxy_cache_path之后,在需要使用缓存的虚拟主机服务器中

配置代理缓存区域名称

区域名称是在代理缓存路径中定义的缓存空间名称。

以便相应的虚拟主机可以使用该缓存空间。

以上是nginx正向代理和反向代理的详细内容。关于nginx正向代理和反向代理的更多信息,请关注我们的其他相关文章!

nginx正向代理与反向代理详解区别,nginx的正向代理和反向代理