本文和大家分享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正向代理和反向代理的更多信息,请关注我们的其他相关文章!