按后端服务器的响应时间来分配 , 响应时间短的优先分配到请求 。比如:%20upstream%20myserver%20{%20fair;%20server%20192.168.4.32:5000;%20server%20192.168.4.32:8080;%20}
实现效果:
在3天内 , 通过浏览器地址栏访问%20http://192.168.4.32/a.jpg , 不会从服务器抓取资源 , 3天后(过期)则从服务器重新下载 。
具体配置:
# http 区域下添加缓存区配置proxy_cache_path /tmp/nginx_proxy_cache levels=1 keys_zone=cache_one:512m inactive=60s max_size=1000m;# server 区域下添加缓存配置location ~ .(gif|jpg|png|htm|html|css|js)(.*) {proxy_pass http://192.168.4.32:5000;#如果没有缓存则转向请求proxy_redirect off;proxy_cache cache_one;proxy_cache_valid 200 1h;#对不同的 HTTP 状态码设置不同的缓存时间proxy_cache_valid 500 1d;proxy_cache_valid any 1m;expires 3d;}expires 是给一个资源设定一个过期时间 , 通过 expires 参数设置 , 可以使浏览器缓存过期时间之前的内容 , 减少与服务器之间的请求和流量 。也就是说无需去服务端验证 , 直接通过浏览器自身确认是否过期即可 , 所以不会产生额外的流量 。此种方法非常适合不经常变动的资源 。5. 动静分离5.1 实战一
实现效果:
通过浏览器地址栏访问 www.abc.com/a.html , 访问静态资源服务器的静态资源内容 。通过浏览器地址栏访问 www.abc.com/a.jsp , 访问动态资源服务器的动态资源内容 。
具体配置:
upstream static {server 192.167.4.31:80;}upstream dynamic {server 192.167.4.32:8080;}server {listen80;#监听端口server_namewww.abc.com; 监听地址# 拦截动态资源location ~ .*.(php|jsp)$ {proxy_pass http://dynamic;}# 拦截静态资源location ~ .*.(jpg|png|htm|html|css|js)$ {root /data/;#html目录proxy_pass http://static;autoindex on;;#自动打开文件列表}}6. 高可用 一般情况下 , 通过 nginx 主服务器访问后台目标服务集群 , 当主服务器挂掉后 , 自动切换至备份服务器 , 此时由备份服务器充当主服务器的角色 , 访问后端目标服务器 。6.1 实战一
实现效果:
准备两台 nginx 服务器 , 通过浏览器地址栏访问虚拟 ip 地址 , 把主服务器的 nginx 停止 , 再次访问虚拟 ip 地址仍旧有效 。
具体配置:
(1)在两台 nginx 服务器上安 keepalived 。
keepalived 相当于一个路由 , 它通过一个脚本来检测当前服务器是否还活着 , 如果还活着则继续访问 , 否则就切换到另一台备份服务器 。
# 安装 keepalivedyum install keepalived -y# 检查版本rpm -q -a keepalivedkeepalived-1.3.5-16.el7.x86_64(2)修改主备服务器 /etc/keepalived/keepalivec.conf 配置文件(可直接替换) , 完成高可用主从配置 。keepalived 将 nginx 服务器绑定到一个虚拟 ip , nginx 高可用集群对外统一暴露这个虚拟 ip , 客户端都是通过访问这个虚拟 ip 来访问 nginx 服务器。
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from_Alexandre.Cassen@firewall.locsmtp_server 192.168.4.32smtp_connect_timeout 30router_id LVS_DEVEL# 在 /etc/hosts 文件中配置 , 通过它能访问到我们的主机}vrrp_script_chk_http_port {script "/usr/local/src/nginx_check.sh"interval 2# 检测脚本执行的时间间隔weight 2# 权重每次加2}vrrp_instance VI_1 {interface ens7f0 # 网卡 , 需根据情况修改state MASTER# 备份服务器上将 MASTER 改为 BACKUPvirtual_router_id 51 # 主备机的 virtual_router_id 必须相同priority 100# 主备机取不同的优先级 , 主机值较大 , 备份机值较小advert_int 1# 每隔多长时间(默认1s)发送一次心跳 , 检测服务器是否还活着authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100 # VRRP H 虚拟地址 , 可以绑定多个}}字段说明- router_id: 在 /etc/hosts 文件中配置 , 通过它能访问到我们的主机 。127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 LVS_DEVEL 复制代码
- interval: 设置脚本执行的间隔时间
- weight: 当脚本执行失败即 keepalived 或 nginx 挂掉时 , 权重增加的值(可为负数) 。
推荐阅读
- Linux安装Nginx详细教程
- 前端进阶高薪必看-CSS之手写篇
- 三年级作文妈妈的爱5篇 三年级作文妈妈的爱
- Nginx配置一键生成
- 汽车到底用不用贴膜?看完这篇文章你会改变想法
- 《老冯寻宝》第一季《秦岭茶记》汉中西乡篇
- Redis从入门到精通,至少要看看这篇
- Nginx下无法使用中文URL的解决方法
- 西装|朱玲玲老了也风韵不减,穿西装高级大气,一眼能看出是不是阔太太
- 致敬最美逆行者的一封信(致敬最美逆行者的一封信作文5篇)
