一、Nginx做动静分离
一)定义
通过中间价将动态请求和静态请求分离
二)为什么需要做动静分离
1、分离的好处
分离资源,减少不必要的请求消耗,减少请求延时。
2、不分离的请求过程
  

3、分离后请求
上面的请求是动态请求,下面的是静态请求
  

三)Nginx做动静分离的场景
  

 
二、Nginx的url处理
一)Nginx rewrite重写
1、应用场景
- URL访问跳转,支持开发设计
 
- 页面跳转、兼容性支持、展示效果
 
- SEO优化
 - 维护
 
- 后台维护、流量转发
 
- 安全
 
2、配置语法
  

rewrite ^(.*)$ /pages/maintain.html break;
3、正则表达式
- . :匹配除换行符以外的任意字符
 - ?:重复0次或1次
 - +:重复1次或多次
 - * :最少连接数,哪个机器连接数少就分发
 - \d:匹配数字
 - ^ :匹配字符串的开始
 - $ :匹配字符串的结尾
 - {n}:重复n次
 - {n,}:重复n次或更多次
 - [c]:匹配单个字符c
 - [a-z]:匹配a-z小写字母的任意一个
 - \:转义字符
 
  

- ():用于匹配括号之间的内容,通过$1、$2调用
 
  

正则终端测试命令pcretest
   

4、flag
不写last和break - 那么流程就是依次执行这些rewrite
1. rewrite break - url重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变
2. rewrite last - url重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到报500错误,地址栏url不变
3. rewrite redirect – 302临时重定向,地址栏显示重定向后的url,爬虫不会更新url
4. rewrite permanent – 301永久重定向, 地址栏显示重定向后的url,爬虫更新url
  

5、rewrite规则执行的优先级
- 执行server块的rewrite
 - 执行location匹配
 - 执行选定的location中的rewrite
 
6、优雅的rewrite规则书写
  

二)Nginx配置实战
1、Nginx根据url参数重写URL
2、Nginx的配置实战
三、高级功能
一)安全:secure_link_module
1、配置语法
  

2、验证图示
  

  

3、配置示例
  

服务端明文保存,客户端匿名
  执行脚本,生成地址

二)geoip_module模块
1、模块功能说明
基于IP地址匹配MaxMind GeoIP二进制文件,读取IP所在地域信息
2、安装模块
yum install nginx-module-geoip

解压
gunzip解压
3、使用场景
- 区别国内外作HTTP访问规则
 - 区别国内城市地域作HTTP访问规则
 
4、配置Nginx
  

三)with-http_ssl_module模块
1、为什么需要HTTPS?
原因:HTTP不安全
- 传输数据被中间人盗用、信息泄露
 - 数据内容劫持、篡改
 
2、对称加密和非对称加密
1、对称加密:加密密钥和解密密钥是对等的
  

2、非对称加密
  

3、HTTP加密协议原理(对称和非对称加密的结合)
  

4、中间人伪造客户端和服务端
  

5、自签证书
- 安装好OpenSSL
 - Nginx编译模块:with_http_ssl_module
 
   

OpenSSL和cfssl生成自签证书:https://blog.51cto.com/9406836/2315174
指定证书过期时间(没有指定默认一个月就会过期)
openssl x509 -req -days 3650 -in
6、证书配置
  

7、实战:配置苹果要求的证书
  

1、验证现存证书信息:
- OpenSSL的版本信息
 
- openssl version
 
- 查看证书信息
 
openssl x509 -noout -text -in
2、升级OpenSSL版本
  

3、升级新的证书
  

8、HTTPS的优化
1、激活keepalive长连接
keepalive_timeout 100;
2、设置 ssl session缓存
ssl_session_cache shared:SSL:10m; #存储8000到10000会话
ssl_session_timeout 10m;
    
    










