Nginx 的这些妙用,你都 get 到了吗?( 五 )


动静分离从目前实现角度来讲大致分为两种:

  • 纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
  • 动态跟静态文件混合在一起发布,通过 Nginx 来分开 。
通过 Location 指定不同的后缀名实现不同的请求转发 。通过 Expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量 。
具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量 。
此种方法非常适合不经常变动的资源(如果经常更新的文件, 不建议使用 Expires 来缓存) 。
我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200 。
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
①服务器找个目录存放自己的静态文件:
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
②修改 nginx.conf:
server{listen80;server_namelocalhost;location/static/{root/usr/data/www;}location/image/{root/usr/data/;autoindexon;}③./nginx -s reload,验证效果:
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
添加监听端口、访问名字重点是添加 Location,最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功,只需要删除后端 Tomcat 服务器上的某个静态文件,查看是否能访问,如果可以访问说明静态资源 Nginx 直接返回了,不走后端 Tomcat 服务器 。
Nginx 的 Rewrite
Rewrite 是 Nginx 服务器提供的一个重要的功能,它可以实现 URL 重写和重定向功能 。
场景如下:
  • URL 访问跳转,支持开发设计 。页面跳转、兼容性支持(新旧版本更迭)、展示效果(网址精简)等
  • seo 优化(Nginx 伪静态的支持)
  • 后台维护、流量转发等
  • 安全(动态界面进行伪装)
该指令是通过正则表达式的使用来改变 URI 。可以同时存在一个或多个指令 。需要按照顺序依次对 URL 进行匹配和处理 。
该指令可以在 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):
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
Rewrite 指令可以在 Server 块或 Location 块中配置,其基本语法结构如下:
rewriteregexreplacement[flag];
  • rewrite 的含义:该指令是实现 URL 重写的指令 。
  • regex 的含义:用于匹配 URI 的正则表达式 。
  • replacement:将 regex 正则匹配到的内容替换成 replacement 。
  • flag:flag 标记 。
flag 有如下值:
  • last:本条规则匹配完成后,继续向下匹配新的 Location URI 规则 。(不常用)
  • break:本条规则匹配完成即终止,不再匹配后面的任何规则(不常用) 。
  • redirect:返回 302 临时重定向,浏览器地址会显示跳转新的 URL 地址 。
  • permanent:返回 301 永久重定向 。浏览器地址会显示跳转新的 URL 地址 。
rewrite^/(.*)http://www.360.cn/$1permanent;Nginx 高可用
如果将 Web 服务器集群当做一个城池,那么负载均衡服务器就相当于城门 。如果“城门”关闭了,与外界的通道就断了 。
如果只有一台 Nginx 负载服务器,当故障宕机的时候,就会导致整个网站无法访问 。
所以我们需要两台以上 Nginx 来实现故障转移和高可用:
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
那么如何配置高可用①双机热备方案
这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实就是指一台服务器在提供服务,另一台为某服务的备用状态,当一台服务器不可用另外一台就会顶替上去 。
Keepalived 是什么?Keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务节点的状态 。


推荐阅读