一、Nginx做动静分离

  一)定义

  通过中间价将动态请求和静态请求分离

  二)为什么需要做动静分离

  1、分离的好处

  分离资源,减少不必要的请求消耗,减少请求延时。

  2、不分离的请求过程

  

Nginx的深入学习_nginx

  3、分离后请求

  上面的请求是动态请求,下面的是静态请求

  

Nginx的深入学习_地址栏_02

 

  三)Nginx做动静分离的场景

  

Nginx的深入学习_重定向_03

 

二、Nginx的url处理

  一)Nginx rewrite重写

  1、应用场景

  1. URL访问跳转,支持开发设计
  1. 页面跳转、兼容性支持、展示效果
  1. SEO优化
  2. 维护
  1. 后台维护、流量转发
  1. 安全

  2、配置语法

  

Nginx的深入学习_nginx_04

rewrite ^(.*)$  /pages/maintain.html break;

  3、正则表达式

  • . :匹配除换行符以外的任意字符
  • ?:重复0次或1次
  • +:重复1次或多次
  • * :最少连接数,哪个机器连接数少就分发
  • \d:匹配数字
  • ^ :匹配字符串的开始
  • $ :匹配字符串的结尾
  • {n}:重复n次
  • {n,}:重复n次或更多次
  • [c]:匹配单个字符c
  • [a-z]:匹配a-z小写字母的任意一个
  • \:转义字符

  

Nginx的深入学习_重定向_05

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

  

Nginx的深入学习_nginx_06

  正则终端测试命令pcretest

   

Nginx的深入学习_地址栏_07

  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

  

Nginx的深入学习_地址栏_08

  5、rewrite规则执行的优先级

  1. 执行server块的rewrite
  2. 执行location匹配
  3. 执行选定的location中的rewrite

  6、优雅的rewrite规则书写

  

Nginx的深入学习_nginx_09

  二)Nginx配置实战

  1、Nginx根据url参数重写URL

  2、Nginx的配置实战

三、高级功能

  一)安全:secure_link_module

  1、配置语法

  

Nginx的深入学习_nginx_10

  2、验证图示

  

Nginx的深入学习_地址栏_11

  

Nginx的深入学习_重定向_12

  3、配置示例

  

Nginx的深入学习_nginx_13

  服务端明文保存,客户端匿名

  执行脚本,生成地址

Nginx的深入学习_地址栏_14

  二)geoip_module模块

  1、模块功能说明

  基于IP地址匹配MaxMind GeoIP二进制文件,读取IP所在地域信息

  2、安装模块

yum install nginx-module-geoip

Nginx的深入学习_地址栏_15

 解压

  gunzip解压

  3、使用场景

  • 区别国内外作HTTP访问规则
  • 区别国内城市地域作HTTP访问规则

  4、配置Nginx

  

Nginx的深入学习_地址栏_16

 

  三)with-http_ssl_module模块

  1、为什么需要HTTPS?

  原因:HTTP不安全

  1. 传输数据被中间人盗用、信息泄露
  2. 数据内容劫持、篡改

   

  2、对称加密和非对称加密

    1、对称加密:加密密钥和解密密钥是对等的

  

Nginx的深入学习_地址栏_17

    2、非对称加密

  

Nginx的深入学习_重定向_18

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

  

Nginx的深入学习_nginx_19

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

  

Nginx的深入学习_地址栏_20

  5、自签证书

  1. 安装好OpenSSL
  2. Nginx编译模块:with_http_ssl_module

   

Nginx的深入学习_重定向_21

  OpenSSL和cfssl生成自签证书:​​https://blog.51cto.com/9406836/2315174​

指定证书过期时间(没有指定默认一个月就会过期)

  

openssl x509 -req -days 3650 -in

 

  6、证书配置

  

Nginx的深入学习_地址栏_22

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

  

Nginx的深入学习_地址栏_23

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

  

Nginx的深入学习_地址栏_24

    3、升级新的证书

  

Nginx的深入学习_地址栏_25

  8、HTTPS的优化

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