动静分离从目前实现角度来讲大致分为两种:
- 纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
- 动态跟静态文件混合在一起发布,通过 Nginx 来分开 。
具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量 。
此种方法非常适合不经常变动的资源(如果经常更新的文件, 不建议使用 Expires 来缓存) 。
我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200 。
文章插图
①服务器找个目录存放自己的静态文件:
文章插图
②修改 nginx.conf:
server{listen80;server_namelocalhost;location/static/{root/usr/data/www;}location/image/{root/usr/data/;autoindexon;}
③./nginx -s reload,验证效果:文章插图
添加监听端口、访问名字重点是添加 Location,最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功,只需要删除后端 Tomcat 服务器上的某个静态文件,查看是否能访问,如果可以访问说明静态资源 Nginx 直接返回了,不走后端 Tomcat 服务器 。
Nginx 的 Rewrite
Rewrite 是 Nginx 服务器提供的一个重要的功能,它可以实现 URL 重写和重定向功能 。
场景如下:
- URL 访问跳转,支持开发设计 。页面跳转、兼容性支持(新旧版本更迭)、展示效果(网址精简)等
- seo 优化(Nginx 伪静态的支持)
- 后台维护、流量转发等
- 安全(动态界面进行伪装)
该指令可以在 Server 块或 Location 块中配置,其基本语法结构如下:
rewriteregexreplacement[flag];
①采用反向代理 Demo2 中的例子,修改 nginx.conf(只多加了一行 Rewrite):server{listen80;server_namelocalhost;location/java/{proxy_passhttp://127.0.0.1:8080;rewrite^/java/egg/redirect;}location/egg/{proxy_passhttp://127.0.0.1:8081;}}
②./nginx -s reload,验证效果(输入 ip/java/ 被重定向到了 egg):文章插图
Rewrite 指令可以在 Server 块或 Location 块中配置,其基本语法结构如下:
rewriteregexreplacement[flag];
- rewrite 的含义:该指令是实现 URL 重写的指令 。
- regex 的含义:用于匹配 URI 的正则表达式 。
- replacement:将 regex 正则匹配到的内容替换成 replacement 。
- flag:flag 标记 。
- last:本条规则匹配完成后,继续向下匹配新的 Location URI 规则 。(不常用)
- break:本条规则匹配完成即终止,不再匹配后面的任何规则(不常用) 。
- redirect:返回 302 临时重定向,浏览器地址会显示跳转新的 URL 地址 。
- permanent:返回 301 永久重定向 。浏览器地址会显示跳转新的 URL 地址 。
rewrite^/(.*)http://www.360.cn/$1permanent;
Nginx 高可用如果将 Web 服务器集群当做一个城池,那么负载均衡服务器就相当于城门 。如果“城门”关闭了,与外界的通道就断了 。
如果只有一台 Nginx 负载服务器,当故障宕机的时候,就会导致整个网站无法访问 。
所以我们需要两台以上 Nginx 来实现故障转移和高可用:
文章插图
那么如何配置高可用①双机热备方案
这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实就是指一台服务器在提供服务,另一台为某服务的备用状态,当一台服务器不可用另外一台就会顶替上去 。
Keepalived 是什么?Keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务节点的状态 。
推荐阅读
- 主流NOSQL的比较与技术选型
- 排名前20位最受欢迎的黑客工具
- 如何成为百度搜索的精选摘要?
- 9层妖塔在青海哪个地方? 青海的九层妖塔
- docker基础篇-安装
- 性取向的分类 什么叫第四性取向
- 我的网站真的需要云负载均衡器吗?
- 16种编程语言是如何命名的?
- Nginx+SpringBoot实现负载均衡
- 中国文化中的茶影像概说