nginx的配置、虚拟主机、负债均衡和反向代理(2)
2015-12-18 17:32
901 查看
上一篇中,我仔细了学习了一下nginx的各个模块的详细讲解,基本对它的一个整体有了一个把握。这一篇就来几个实际的例子来看下虚拟主机、负债均衡和反向代理,是如何做到的。
假设我们在本地开发有3个项目,分别在hosts里映射到本地的127.0.0.1上:
有这样3个项目,分别对应于web根目录下的3个文件夹,我们用域名对应文件夹名字,这样子好记:
每个目录下都有一个index.php文件,都素简单的输入自己的域名。
下面我们就来搭建这3个域名的虚拟主机,很显然,我们要新建3个
既然每一个
这样3个很精简的虚拟域名就搭建好了。重启下nginx,然后打开浏览器访问一下这3个域名,就能看到对应的域名内容了。
结论就是,
目前代理软件很多,浏览器上的代理就更多了。什么自由门啊,红杏等。
举个例子,比如我想访问
结论就是,
嗯。正向代理和反向代理就基本清楚了,那我们就来用nginx来配置一个反向代理。
nginx 使用反向代理,主要是使用
我们直接实战吧!
来个最简单的。当我访问 mac 上的nginx 的 centos.iyangyi.com 的内容时候, 就反向代理到虚拟机centos上的 apache 192.168.33.10 的index.html页面。
192.168.33.10 中的html 是很简单的一句输出:
在hosts里新加上这个域名。
在vhost目录中新建一个conf server
重启下nginx:
打开浏览器,就可以看到页面输出了:
当然。proxy 还有其他的参数,比如:
先简单说下负载均衡是干嘛的?举个例子:我们的小网站,刚开始就一台nginx服务器,后来,随着业务量增大,用户增多,一台服务器已经不够用了,我们就又多加了几台服务器。那么这几台服务器如何调度?如何均匀的提供访问?这就是负载均衡。
负载均衡的好处是可以集群多台机器一起工作,并且对外的IP 和 域名是一样的,外界看起来就好像一台机器一样。
nginx 也刚好提供了强大而又简单的负载均衡功能。
在第一节中,我详细讲了nginx的负载均衡模块
我们先用vagrant搭建一个centos虚拟机集群(附vagrantfile文件)
分别配置静态ip并且取名字:
然后,我们分别启动
好,这个时候,我们在浏览器里输入对应的IP就会显示对应的
ok,我们再来配置mac下的nginx,前面说过,主要是用nginx的
先在hosts里加上
好,按照惯例,新建一个
重启nginx
我们再打开web[1-3]的apache的访问日志:
上面也显示出了ip为这台mac的地址。说明负载均衡已经生效。
我们再来继续看几个参数 :
max_fails : 允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
fail_timeout : 在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用,进行健康状态检查。
所以这2个一起搭配使用,表示:
好,我们来继续做实验,将
重启nginx,然后刷新
看下日志,显示web1 挂了:
我们再来继续看剩下几个参数 :
down 表示这台机器暂时不参与负载均衡。相当于注释掉了。
backup 表示这台机器是备用机器,是其他的机器不能用的时候,这台机器才会被使用,俗称
我们继续来做实验,改一下,先把
重启下nginx,然后刷新下,不管怎么刷新,都显示是
接下来,我们将web2 的服务停掉:
然后,我们再刷新下网页,看下备胎web3是不是被启用了:果然,页面上输出了
动手看怎么操作:
重启nginx,我们刷新,发现,再怎么刷,都是
我们讲web2的权重该大一点:
这样就会永远是web2了。
我们试着把web2服务关掉,再刷新,就会输出
注意
ip_hash 模式下,最好不要设置
ip_hash模式下,
nginx 也提供了简单而强大的下
好。现在开始学习!
我们先来看一下一个简单的页面缓存的配置:
下面我们来一步一步说。用到的配置参数,主要是
首先需要在
那这个里面的数字是什么意思呢。表示取hash值的个数。比如:现在根据请求地址localhost/index.php?a=4 用md5进行哈希,得到e0bd86606797639426a92306b1b98ad9
以此类推:
注意每一个定义的内存池必须是不重复的路径,例如:
好。说完了这个很重要的参数。我们再来说在
而如果
表示为http status code 为200和302的设置缓存时间为10分钟,404代码缓存1分钟。
如果只定义时间:
那么只对代码为200, 301和302的code进行缓存。
同样可以使用any参数任何相响应:
好。缓存的基本一些配置讲完了。也大致知道了怎么使用这些参数。
现在开始实战!我们启动一台vagrant linux 机器 web1 (192.168.33.11) 用作远程代理机器,就不搞复杂的负载均衡了。
先在Mac本地加一个域名
当然缓存文件夹
192.168.33.11 是apache服务器,在index.html页面就写了一个
我们打开浏览器访问
打开
X-cache 为
MISS 未命中,请求被传送到后端
HIT 缓存命中
EXPIRED 缓存已经过期请求被传送到后端
UPDATING 正在更新缓存,将使用旧的应答
STALE 后端将得到过期的应答
BYPASS 缓存被绕过了
我们再去看看缓存文件夹
已经生成了缓存文件。
我们在url 后面随便加一个什么参数,看会不会新生成一个缓存文件夹及文件:
查看 X-cache 为
果然又生成了一个4文件夹。
参考资料:http://freeloda.blog.51cto.com/2033581/1288553
1. 基于域名的虚拟主机
在apache上搭建基于域名的虚拟主机很简单,我之前也写过一篇,来讲述如何搭建。在nginx上搭建也不难。假设我们在本地开发有3个项目,分别在hosts里映射到本地的127.0.0.1上:
127.0.0.1 www.iyangyi.com iyangyi.com 127.0.0.1 api.iyangyi.com 127.0.0.1 admin.iyangyi.com
有这样3个项目,分别对应于web根目录下的3个文件夹,我们用域名对应文件夹名字,这样子好记:
/Users/yangyi/www/www.iyangyi.com/ /Users/yangyi/www/api.iyangyi.com/ /Users/yangyi/www/admin.iyangyi.com/
每个目录下都有一个index.php文件,都素简单的输入自己的域名。
下面我们就来搭建这3个域名的虚拟主机,很显然,我们要新建3个
server来完成。为了看起来简洁好看,我们使用
require来包含外面的3个
server在
nginx.conf中,这样就清晰了很多。不会使得这个
nginx.conf内容太多:
main events { .... } http { .... include vhost/www.iyangyi.conf; include vhost/api.iyangyi.conf; include vhost/admin.iyangyi.conf; #或者用 *.conf 包含 # include vhost/*.conf }
既然每一个
conf都是一个
server,前面已经学习了一个完整的
server写的了。下面就开始:
# www.iyangyi.conf server { listen 80; server_name www.iyangyi.com iyangyi.com; root /Users/yangyi/www/www.iyangyi.com/; index index.php index.html index.htm; access_log /usr/local/var/log/nginx/www.iyangyi.access.log main; error_log /usr/local/var/log/nginx/www.iyangyi.error.log error; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } }
# api.iyangyi.conf server { listen 80; server_name api.iyangyi.com; root /Users/yangyi/www/api.iyangyi.com/; index index.php index.html index.htm; access_log /usr/local/var/log/nginx/api.iyangyi.access.log main; error_log /usr/local/var/log/nginx/api.iyangyi.error.log error; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } }
# admin.iyangyi.conf server { listen 80; server_name admin.iyangyi.com; root /Users/yangyi/www/admin.iyangyi.com/; index index.php index.html index.htm; access_log /usr/local/var/log/nginx/admin.iyangyi.access.log main; error_log /usr/local/var/log/nginx/admin.iyangyi.error.log error; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } }
这样3个很精简的虚拟域名就搭建好了。重启下nginx,然后打开浏览器访问一下这3个域名,就能看到对应的域名内容了。
2.反向代理
正向代理
在说啥啥反向代理之前,先说下什么是代理或者
正向代理。
正向代理也就是代理,他的工作原理就像一个跳板,简单的说,我访问不了google.com,但是我能访问一个代理服务器A,A能访问google.com,于是我先连上代理服务器A,告诉他我需要google.com的内容,A就去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
结论就是,
正向代理是一个位于
客户端和
原始服务器(origin server)之间的服务器。为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
目前代理软件很多,浏览器上的代理就更多了。什么自由门啊,红杏等。
反向代理
ok,说完正向代理,再来说啥是反向代理!
举个例子,比如我想访问
http://www.test.com/readme,但
www.test.com上并不存在
readme页面,于是他是偷偷从另外一台服务器上取回来,然后作为自己的内容返回用户,但用户并不知情。这里所提到的 www.test.com 这个域名对应的服务器就设置了
反向代理功能。
结论就是,
反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
嗯。正向代理和反向代理就基本清楚了,那我们就来用nginx来配置一个反向代理。
nginx 使用反向代理,主要是使用
location模块下的
proxy_pass选项。
我们直接实战吧!
来个最简单的。当我访问 mac 上的nginx 的 centos.iyangyi.com 的内容时候, 就反向代理到虚拟机centos上的 apache 192.168.33.10 的index.html页面。
192.168.33.10 中的html 是很简单的一句输出:
centos apache2 index.html
在hosts里新加上这个域名。
#vi /etc/hosts 127.0.0.1 centos.iyangyi.com
在vhost目录中新建一个conf server
#centos.iyangyi.conf server { listen 80; server_name centos.iyangyi.com; access_log /usr/local/var/log/nginx/centos.iyangyi.access.log main; error_log /usr/local/var/log/nginx/centos.iyangyi.error.log error; location / { proxy_pass http://192.168.33.10; } }
重启下nginx:
sudo nginx -s reload
打开浏览器,就可以看到页面输出了:
centos apache2 index.html
当然。proxy 还有其他的参数,比如:
proxy_set_header用来设置header头部信息参数转发等,等用了可以仔细看看。
3.负载均衡
别被这个名字给吓住了,以为是什么很牛逼的东西的。其实不然。也很简单。先简单说下负载均衡是干嘛的?举个例子:我们的小网站,刚开始就一台nginx服务器,后来,随着业务量增大,用户增多,一台服务器已经不够用了,我们就又多加了几台服务器。那么这几台服务器如何调度?如何均匀的提供访问?这就是负载均衡。
负载均衡的好处是可以集群多台机器一起工作,并且对外的IP 和 域名是一样的,外界看起来就好像一台机器一样。
nginx 也刚好提供了强大而又简单的负载均衡功能。
在第一节中,我详细讲了nginx的负载均衡模块
upstream,负载均衡呢,主要是用这个模块。
我们先用vagrant搭建一个centos虚拟机集群(附vagrantfile文件)
Vagrant.configure(2) do |config| config.vm.define :web1 do |web1| web1.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "web1", "--memory", "128"] end web1.vm.box = "centos65" web1.vm.hostname = "web1" web1.vm.network :private_network, ip: "192.168.33.11" end config.vm.define :web2 do |web2| web2.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "web2", "--memory", "128"] end web2.vm.box = "centos65" web2.vm.hostname = "web2" web2.vm.network :private_network, ip: "192.168.33.12" end config.vm.define :web3 do |web3| web3.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "web3", "--memory", "128"] end web3.vm.box = "centos65" web3.vm.hostname = "web3" web3.vm.network :private_network, ip: "192.168.33.13" end end
分别配置静态ip并且取名字:
web1 192.168.33.11 web2 192.168.33.12 web3 192.168.33.13
然后,我们分别启动
vagrant ssh web1,web2,web3,并且分别用
yum简单安装好
apache。并在
www目录里面新建
index.html,分别输出一句简单的
web1、
web2、
web3。
好,这个时候,我们在浏览器里输入对应的IP就会显示对应的
web*名字了。
ok,我们再来配置mac下的nginx,前面说过,主要是用nginx的
upstream,我接下来要完成的需求就是当我访问
upstram.iyangyi.com时,会自动的负载均衡到这3个服务器上去。
先在hosts里加上
127.0.0.1 upstream.iyangyi.com
好,按照惯例,新建一个
upstream.iyangyi.conf的server配置文件。
基于 weight 权重的负载
先来一个最简单的,weight权重的:upstream webservers{ server 192.168.33.11 weight=10; server 192.168.33.12 weight=10; server 192.168.33.13 weight=10; } server { listen 80; server_name upstream.iyangyi.com; access_log /usr/local/var/log/nginx/upstream.iyangyi.access.log main; error_log /usr/local/var/log/nginx/upstream.iyangyi.error.log error; location / { proxy_pass http://webservers; proxy_set_header X-Real-IP $remote_addr; } }
重启nginx
nginx -s reload,打开浏览器输入
upstream.iyangyi.com,不断刷新下,就能看到变化显示
web1,web2,web3。说明我们的负载均衡起作用了。
我们再打开web[1-3]的apache的访问日志:
sudo vi /var/log/httpd/access_log 192.168.33.1 - - [12/May/2015:10:47:02 +0000] "GET / HTTP/1.0" 200 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
上面也显示出了ip为这台mac的地址。说明负载均衡已经生效。
我们再来继续看几个参数 :
max_fails和
fail_timeout
max_fails : 允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
fail_timeout : 在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用,进行健康状态检查。
server 192.168.33.11 weight=1 max_fails=2 fail_timeout=30s;
所以这2个一起搭配使用,表示:
当失败2次的时候,就停止使30秒
好,我们来继续做实验,将
web1的httpd服务停掉,然后我们加上max_fails可以和fail_timeout。
sudo /usr/sbin/apachectl stop
upstream webservers{ server 192.168.33.11 weight=10 max_fails=2 fail_timeout=30s; server 192.168.33.12 weight=10 max_fails=2 fail_timeout=30s; server 192.168.33.13 weight=10 max_fails=2 fail_timeout=30s; }
重启nginx,然后刷新
upstream.iyangyi.com,就能看到变化显示,只有
web2,web3,
web1没有了。
看下日志,显示web1 挂了:
2015/05/14 15:15:56 [error] 2381#0: *93 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: upstream.iyangyi.com, request: "GET / HTTP/1.1", upstream: "http://192.168.33.11:80/", host: "upstream.iyangyi.com"
我们再来继续看剩下几个参数 :
down和
backup
down 表示这台机器暂时不参与负载均衡。相当于注释掉了。
backup 表示这台机器是备用机器,是其他的机器不能用的时候,这台机器才会被使用,俗称
备胎O__O “…
我们继续来做实验,改一下,先把
web1改成
down,然后将web3改成
backup:
upstream webservers{ server 192.168.33.11 down; server 192.168.33.12 weight=10 max_fails=2 fail_timeout=30s; server 192.168.33.13 backup; }
重启下nginx,然后刷新下,不管怎么刷新,都显示是
web2。
接下来,我们将web2 的服务停掉:
sudo /usr/sbin/apachectl stop
然后,我们再刷新下网页,看下备胎web3是不是被启用了:果然,页面上输出了
web3。
基于 ip_hash 的负载
这种分配方式,每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。动手看怎么操作:
upstream webservers{
ip_hash;
server 192.168.33.11 weight=1 max_fails=2 fail_timeout=30s;server 192.168.33.12 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.33.13 down;
}
重启nginx,我们刷新,发现,再怎么刷,都是
web1, 是固定的了。
我们讲web2的权重该大一点:
upstream webservers{
ip_hash;
server 192.168.33.11 weight=1 max_fails=2 fail_timeout=30s;server 192.168.33.12 weight=2 max_fails=2 fail_timeout=30s;
server 192.168.33.13 down;
}
这样就会永远是web2了。
我们试着把web2服务关掉,再刷新,就会输出
web1了,已经切换过来了。
注意
ip_hash 模式下,最好不要设置
weight参数,因为你设置了,就相当于手动设置了,将会导致很多的流量分配不均匀。
ip_hash模式下,
backup参数不可用,加了会报错,为啥呢?因为,本身我们的访问就是固定的了,其实,备用已经不管什么作用了。
4.页面缓存
页面缓存也是日常web 开发中很重要的一个环节,对于一些页面,我们可以将其静态化,保存起来,下次请求时候,直接走缓存,而不用去请求反相代理服务器甚至数据库服务了。从而减轻服务器压力。nginx 也提供了简单而强大的下
重定向,
反向代理的缓存功能,只需要简单配置下,就能将指定的一个页面缓存起来。它的原理也很简单,就是匹配当前访问的url, hash加密后,去指定的缓存目录找,看有没有,有的话就说明匹配到缓存了。
好。现在开始学习!
我们先来看一下一个简单的页面缓存的配置:
http { proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache_zone:10m inactive=1d max_size=100m; upstream myproject { ..... } server { .... location ~* \.php$ { proxy_cache cache_zone; #keys_zone的名字 proxy_cache_key $host$uri$is_args$args; #缓存规则 proxy_cache_valid any 1d; proxy_pass http://127.0.0.1:8080; } } .... }
下面我们来一步一步说。用到的配置参数,主要是
proxy_*前缀的很多配置。
首先需要在
http中加入
proxy_cache_path它用来制定缓存的目录以及缓存目录深度制定等。它的格式如下:
proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];
1. path是用来指定 缓存在磁盘的路径地址。比如:
/data/nginx/cache。那以后生存的缓存文件就会存在这个目录下。
2. levels用来指定缓存文件夹的级数,可以是:
levels=1,
levels=1:1,
levels=1:2,
levels=1:2:3可以使用任意的1位或2位数字作为目录结构分割符,如
X,
X:X,或
X:X:X例如:
2,
2:2,
1:1:2,但是最多只能是三级目录。
那这个里面的数字是什么意思呢。表示取hash值的个数。比如:现在根据请求地址localhost/index.php?a=4 用md5进行哈希,得到e0bd86606797639426a92306b1b98ad9
levels=1:2表示建立2级目录,把hash最后1位(9)拿出建一个目录,然后再把9前面的2位(ad)拿来建一个目录, 那么缓存文件的路径就是
/data/nginx/cache/9/d/e0bd86606797639426a92306b1b98ad9
以此类推:
levels=1:1:2表示建立3级目录,把hash最后1位(9)拿出建一个目录,然后再把9前面的1位(d)建一个目录, 最后把d前面的2位(8a)拿出来建一个目录 那么缓存文件的路径就是
/data/nginx/cache/9/d/8a/e0bd86606797639426a92306b1b98ad9
3. keys_zone所有活动的key和元数据存储在共享的内存池中,这个区域用keys_zone参数指定。one指的是共享池的名称,10m指的是共享池的大小。
注意每一个定义的内存池必须是不重复的路径,例如:
proxy_cache_path /data/nginx/cache/one levels=1 keys_zone=one:10m; proxy_cache_path /data/nginx/cache/two levels=2:2 keys_zone=two:100m; proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;
4. inactive表示指定的时间内缓存的数据没有被请求则被删除,默认inactive为10分钟。
inactive=1d1小时。
inactive=30m30分钟。
5. max_size表示单个文件最大不超过的大小。它被用来删除不活动的缓存和控制缓存大小,当目前缓存的值超出max_size指定的值之后,超过其大小后最少使用数据(LRU替换算法)将被删除。
max_size=10g表示当缓存池超过10g就会清除不常用的缓存文件。
6. clean_time表示每间隔自动清除的时间。
clean_time=1m1分钟清除一次缓存
好。说完了这个很重要的参数。我们再来说在
server模块里的几个配置参数:
proxy_cache用来指定用哪个
keys_zone的名字,也就是用哪个目录下的缓存。上面我们指定了三个
one, two,three。比如,我现在想用
one这个缓存目录 :
proxy_cache one
proxy_cache_key这个其实蛮重要的,它用来指定生成hash的url地址的格式。他会根据这个key映射成一个hash值,然后存入到本地文件。
proxy_cache_key $host$uri表示无论后面跟的什么参数,都会访问一个文件,不会再生成新的文件。
而如果
proxy_cache_key $is_args$args,那么传入的参数 localhost/index.php?a=4 与localhost/index.php?a=44将映射成两个不同hash值的文件。
proxy_cache_key默认是
"$scheme$host$request_uri"。但是一般我们会把它设置成:
$host$uri$is_args$args一个完整的url路径。
proxy_cache_valid它是用来为不同的http响应状态码设置不同的缓存时间,
proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;
表示为http status code 为200和302的设置缓存时间为10分钟,404代码缓存1分钟。
如果只定义时间:
proxy_cache_valid 5m;
那么只对代码为200, 301和302的code进行缓存。
同样可以使用any参数任何相响应:
proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m; #所有的状态都缓存1小时
好。缓存的基本一些配置讲完了。也大致知道了怎么使用这些参数。
现在开始实战!我们启动一台vagrant linux 机器 web1 (192.168.33.11) 用作远程代理机器,就不搞复杂的负载均衡了。
先在Mac本地加一个域名
cache.iyangyi.com, 然后按照上面的配置在vhost 下新建一个
proxy_cache.iyangyi.conf文件:
proxy_cache_path /usr/local/var/cache levels=1:2 keys_zone=cache_zone:10m inactive=1d max_size=100m; server { listen 80; server_name cache.iyangyi.com; access_log /usr/local/var/log/nginx/cache.iyangyi.access.log main; error_log /usr/local/var/log/nginx/cache.iyangyi.error.log error; add_header X-Via $server_addr; add_header X-Cache $upstream_cache_status; location / { proxy_set_header X-Real-IP $remote_addr; proxy_cache cache_zone; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 304 1m; proxy_pass http://192.168.33.11; } }
当然缓存文件夹
/usr/local/var/cache得提前新建好。然后重启nginx。
192.168.33.11 是apache服务器,在index.html页面就写了一个
web1。
我们打开浏览器访问
cache.iyangyi.com。就能看到
web1了。
打开
审核元素或者
firebug。看
network网络请求选项,我们可以看到,Response Headers,在这里我们可以看到:
X-Cache:MISS X-Via:127.0.0.1
X-cache 为
MISS表示未命中,请求被传送到后端。y因为是第一次访问,没有缓存,所以肯定是未命中。我们再刷新下,就发现其变成了
HIT, 表示命中。它还有其他几种状态:
MISS 未命中,请求被传送到后端
HIT 缓存命中
EXPIRED 缓存已经过期请求被传送到后端
UPDATING 正在更新缓存,将使用旧的应答
STALE 后端将得到过期的应答
BYPASS 缓存被绕过了
我们再去看看缓存文件夹
/usr/local/var/cache里面是否有了文件:
cache git:(master) cd a/13 ➜ 13 git:(master) ls 5bd1af99bcb0db45c8bd601d9ee9e13a ➜ 13 git:(master) pwd /usr/local/var/cache/a/13
已经生成了缓存文件。
我们在url 后面随便加一个什么参数,看会不会新生成一个缓存文件夹及文件:
http://cache.iyangyi.com/?w=ww55。因为我们使用的生成规则是全部url转换(
proxy_cache_key $host$uri$is_args$args;)
查看 X-cache 为
MISS,再刷新 ,变成
HIT。再去看一下缓存文件夹
/usr/local/var/cache。
~cache git:(master) ls 4 a
果然又生成了一个4文件夹。
参考资料:http://freeloda.blog.51cto.com/2033581/1288553
相关文章推荐
- 使用nginx为ArcGIS Server做反向代理
- 初探nginx反向代理
- 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
- nginx实现反向代理
- squid介绍及其简单配置
- CentOS 6.4下Squid代理服务器的安装与配置(转)
- Apache 反向代理原理介绍
- nginx 虚拟目录反向代理tomcat 应用程序
- 正向代理与反向代理的区别
- OpenResty 反向代理的用法与技巧
- Linux_SquidProxyServer代理服务器
- Nginx反向代理和负载均衡部署指南
- Nginx web服务器 安装 配置PHP SSL 反向代理 负载均衡 web缓存 URL 重写 写分离
- Haproxy 负载均衡 反向代理
- go学习笔记:golang实现的反向代理
- (转)ubuntu apache2 的负载均衡和反向代理
- nginx 反向代理 time-out
- centos samba/squid 配置 samba配置 smbclient mount fstab自动挂载samba curl -xlocalhost:3128 www.qq.com squid配置 3128 DNSPOD 第二十七节课
- squid正向代理,反向代理搭建
- Nginx反向代理和负载均衡部署