ngnx高级知识
在centos上安装jdk,yum -y list jdk 查看一下,之后yum -y install 查看有的,右击, java -sersion查看安装后的版本
安装tomcat 先用 yum search tomcat 查询那些可以安装
动静分离
静态资源最好放放在一个目录下,如果不大放在程序目录下通过匹配可以找出哪些是动态访问和静态访问,以jsp,php等结尾的一般为动态资源
nginx深度学习篇
动静分离
通过中间件把动态请求和静态请求分离,减少不必要的请求消耗,有些请求页面不需要计算的
对于客户端可以减少请求延时
这样的请求消耗很大
Nginx的rewrite规则
实现url重写及重定向
使用场景:
1.url访问跳转,支持开发设计(页面跳转,兼容性开发,展示效果)
2.seo优化
3.维护,后台维护,流量转发
3.安全
语法:rewrite regex//正则表达式 peplacement[flag]//替换的东西 flag是标识
context:server,location,if
例:rewrite ^(.*)$/pages/maintain.html break
$表示结尾打错了
不是去匹配
flag
浏览器会永远记住永久性
last还会重定向一次,break立马结束
!-f $request_filename//表示是否有这个页面路径
Rewrite规则优先级 显示server 在HTTP,最后location
nginx高级模块
介绍一些理解难度较高的Nginx模块
secure_link_module模块
1.远远高级于前面学习的防盗链,客户访问
一。定制并应许检查请求的链接的真实性以及保护资源未经授权访问
二限制链接生效周期
配置语法,secure_link expression//表达式;secure_link_md5 expression;
例:
客户端进行加密,跟请求过来的匹配,如果相同就没问题,imooc代表家没问,只有在服务端是明文状态
geoip_module模块
基于ip地址匹配MaxMind GeoIP二进制文件,读取ip所在的地域信息
yum install naginx-module-geoip快速下载安装(区分国内国外),也可以基于国内城市地域做http规则
会安装在/etc/nginx/modules/
因为geoip是基于maxmind里数据表格文件定义的,所以需要下载maxmind文件
一个国家一个城市,解压
在conf文件中用来读取那两个文件
remote_addr表示访问的信息,这样就会吐出该ip的信息country国家
HTTPS服务
http:数据不安全,没有加密,容易被盗用,数据内容劫持串改
对称加密:发送方加密,接收方解密,**是一样的
非对称加密:发送方加密,接收方解密,**不是一样的,公钥,和私钥
https加密原理
生成**和CA签名证书
查看自己的服务器有没有OpenSSL
用openssl version查看
在Nginx上用nginx -V查看有没有with-http-ssl-module这个模块
首先用openssl生成秘钥,通过秘钥生成ca证书的签名文件csr文件,之后把秘钥和csl文件一并打包发送给对应的签名机构利用你公司的域名,相关机构等信息进行ca证书签名,得到ca签名证书
步骤一:生成key秘钥
步骤二:生成证书签名请求文件(csr文件)
步骤三,生成证书签名文件(CA文件)
openssl genrsa -idea//对称加密算法 -out//key文件 jesonc.key 1024 // 加密位数,回车后输入密码,一定要记住
生成一个文件步骤一完成
步骤二openssl req -new -key jesonc.key -out jesonc.csr//把步骤一生成的key文件out成一个csr文件(请求文件),需要输入刚刚密码,填写相关信息。步骤二完成。
注意证书过期时间,-days//默认一个月,肯定不行3650十年 -in加入,out成一个crt文件输入密码生成ca签证
有了签名文件就可以来配置https服务了
ssl 表示是否开启ssl服务请求响应
ssl的签名文件,ssl的签名密码文件,有了这三个就可以搭建了
监听是443
直接生成crt签名证书,不用生成csr文件
-sha256 表示自签要求的算法 -newkeyrsa:2048 表示位数 //上面的要输入密码,这个不用因为这个价了keyout会生成一个新的key文件和crt文件
这个可以通过拷贝的方式去掉保护码
https服务优化
因为它是在http之前建立ssl握手,论证就多出了一个连接,论证就会会消耗服务端cpu资源和io资源的 ,性能没有http高。
方法一,**keepalive长连接,能处理更多请求,减少请求
方法二。设置ssl session缓存
在server中设置keepalive_timeout 更长 和 ssl_session_cache 共享缓存更大些
Nginx与lua开发
在企业在代码迭代升级的时候往往需要让客户感知,让错误减少,就需要结合lua实现代码灰色发布
Nginx+Lua优势
充分的结合Nginx的并发处理epoll优势和lua的轻量实现简单的功能高并发场景 epoll是处理大批量文件 socket槽
Nginx内核是epoll模型,非阻塞io的方式,快速争强访问并发
安装lua
yum install lua
敲lua就能进入解释器环境,可以print(。。。)输出
或者也可以用脚本文件书写,chmod a+rx ./test.lua给与对于可执行的环境,执行的权限,之后执行./test.lua就好了
注释:--行注释,--[[...]]块注释
变量写法很多种 直接赋值。。。
布尔只有nil和false 数字0,空字符全是true
没有特殊说明全是全局变量,前面加log就是局部变量
~= 表示不等于
io.read表示从终端读取客户输入的数据,字符串拼接“..”,