实验一、
实验环境:
1、一台director主机。并部署nginx服务。
内网iP:192.168.1.1 外网iP:10.1.64.1
2、一台后端服务器。并部署httpd服务。并创建两个测试页。
Vim /var/www/html/index.html
Vim /var/www/html/admin/index.html
实验步骤:
1、配置director主机,vim /var/nginx/conf.d/default.conf
location / {
root /usr/share/nginx/html;
proxy_pass http://192.168.1.2;
index index.html index.htm;
}
location /admin/ {
proxy_pass http://192.168.1.2;
}
注意:当proxy_pass http://192.168.1.2;时,用浏览器访问10.1.64.1/admin/时,
出现的页面是定义在/var/www/html/admin/index.html中的页面。
当proxy_pass http://192.168.1.2/;时,用浏览器访问10.1.64.1/admin/时,
将被代理服务器代理到后端,显示/var/www/html/index.html中的页面。
2、将符合条件的URL代理至后端服务器。例如将图片代理至后端。
location ~* \.(jpg|peg|gif|png)$ {
proxy_pass http://192.168.1.2;
}
在/var/www/html/放置一张图片。
实验二、
proxy_set_header field value;
设定发往后端主机的请求报文的请求首部的值;Context: http, server, location
通过实验一的实验结果查看后端服务器的httpd的access.log日志,会发现请求结果全是
由director192.168.1.1请求的。
将proxy_set_header模块添加上后,可以在后端服务器的日志中记录实际的报文发起者,
而不再记录director的ip。
配置nginx服务。
将该模块加入到server中
proxy_set_header X-Real-IP $remote_addr;
X-Real-IP $remote_addr:面向客户端一侧时,真正发出请求的客户端的ip地址。于
将请求直接向后端代理。
配置httpd的httpd.conf配置文件
重启服务,在浏览器中登录网页。查看后端服务器的access.log文件。
实验三、定义proxy的缓存功能。
1、定义可用于proxy功能的缓存。只可定义于http。
vim /etc/nginx/nginx.conf
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g;
定义缓存路径:/var/cache/nginx/proxy_cache
定义缓存级别:level=1:1:1
Max_size:目录一共用多大的空间来缓存缓存项
Keys_zone:
2、定义在需要调用缓存功能的配置段,例如对图片定义缓存功能。
Vim default.conf
location ~* \.(jpg|jpeg|gif|png)$ {
proxy_pass http://192.168.1.2;
proxy_cache pxycache; 表示调用此缓存功能。
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h; 对不同的响应码作缓存时长。
proxy_cache_valid any 1m; 对其他响应码作缓存时长,为1min。
}
4、重启服务。在浏览器中输入10.2.64.1/logo.png第一次响应会有点慢,但是当第一次请
求成功后,当第二次请求时就会很快了,因为在/var/cache/nginx/porxy_cache目录中已
经生成了缓存项,可以进入该目录进行验证。
实验四、
定义服务器组
实验环境:
1、一台director,并配置nginx服务。
内网ip:192.168.1.1 外网ip:10.1.64.1
2、两台后端服务器,分别部署httpd服务,并创建相应的测试页。
Server1:192.168.1.2 server2:192.168.1.3
实验步骤:
1、在nginx的http中定义后端服务器组。
upstream webser {
Server 192.168.1.2;
Server 192.168.1.3;
}
2、在default.conf中定义后端引用;
location / {
proxy_pass http://webser;
}
3、当在浏览器中测试10.1.64.1时,后端服务器组会以轮询的方式显示页面,实现了
后端服务器的负载均衡,在生产环境中,服务器组中的页面内容应该是一样的。
4、测试weight=number
upstream webser {
Server 192.168.1.2 weight=2;
Server 192.168.1.3;
}
当在server 192.168.1.2上加上权重后,server1在被响应时,会根据权重的值来轮询。
5、backup
将服务器标记为“备用”,即所有服务器均不可用时此服务器才启用;
在server2主机上部署nginx服务,提供测试页,并将端口修改为8080,因为80端口
已经被httpd服务占用。
upstream webser {
Server 192.168.1.2 weight=2;
Server 192.168.1.3;
Server 192.168.1.3:8080 buckup;
}
当server1和server2的主机正常工作时,server3是不会被启用的。只有当server1和
Server2都不可用时server3才会被启用。
6、测试hash key
在之前的两台后端主机上分别创建10个名称相同内容不同的网页,以判断是来自主机
1还是主机2。
upstream webser {
Server 192.168.1.2 weight=2;
Server 192.168.1.3;
Server 192.168.1.3:8080 buckup;
hash $request_uri;
}
http://10.1.64.1/test{1..9}.html进行测试
实现的效果就是:
把对同一个url的请求,不管是来自哪台主机,都将发往upstream server;
原创文章,作者:zzd,如若转载,请注明出处:http://www.178linux.com/56221