Nginx深入篇
动静分离演示
通过正则规则 来判断动静分离规则 通过nginx把 动态资源和静态资源进行分离
Rewrite
场景:
1.url访问跳转 支持开发设计 ,兼容性设计(新老接口都要支持),效果展示。
2.SEO优化 伪静态改写 实现搜索引擎的录入
3.维护 后台维护 浏览转发
4.安全
语法: regex正则表达式
syntax:rewrite regex replacement [flag];
default:-
context: server location , if
栗子:所有请求转到一个维护页面
rewrite ^(.*)$ /pages/home break;
正则表达式: 常用
. 匹配除换行符以外任意字符
? 重复0次或一次
+ 重复一次或更多次
* 最少连接数 哪个机器连接数少就分发
\d 匹配数字
^ 匹配字符串开始
$ 匹配字符串结束
{n} 重复N次
{n,}重复N次或更多次
[c] 匹配单个字符串c
[a-z] 匹配a-z小写字母任意一个
() 用于匹配扩号之前的内容 通用$1 $2 调用
栗子:rewrite ^(.*)$ /msie/$1 break;
flag:
区别:last会重新建立一次连接 而 break不会直接会卡死只会查root不会再走一次location
last 停止 rewrite 检测
break 停止 rewrite 检测、
区别: 临时 永久 临时每一次都会访问服务端 然后跳转 永久直接跳转除非清理缓存记住重定向结果
redirect 返回302 临时重定向 地址栏会显示跳转后的地址
permanent 返回301 永久重定向 地址栏会显示跳转后的地址
Rewrite规则优先级
执行server 块的 rewrite
执行location
执行location的 rewrite
pcretest 测试正则表达式
使用方式 输入正则 然后 enter 然后输入data enter
Nginx高级模块
secure_link_module 安全模块
制定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问
闲置链接的生命周期
语法:
syntax: secure_link expression;
default: -;
context: http server location
syntax: secure_link_md5 expression;
default: -;
context: http server location
作用:返回 加密链接和过期时间
栗子:
location / {
root /opt/download;
链接栗子:http:ip:pore?md5=aerwvaasdvafd&expires=31421
//取参数值 md5 expires
secure_link $agr_md5,$arg_expires;
//判断参数是否合法 imooc自定义加密串
secure_link_md5 "$secure_link_expires$uri imooc";
if($secure_link = "" ){return 403;}
if($secure_link = 0 ){return 410;}
}
geoip_module
基于IP地址的地域信息读取 MaxMind GeoIp
yum install nginx-module-geoip
1.区别国内国外 http 访问规则
2.基于城市地域作http 访问规则
[https://blog.csdn.net/tadwork/article/details/80742904]
第一步 vim nginx.conf load_module ;
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
第二部
geoip_country /opt/GeoIP.dat
geoip_city /opt/GeoLiteCity.dat
HTTPS
协议原理优势劣势
1.为什么需要https
http不安全,中间人盗用 信息泄露
2.对称加密 非对称加密
对称机密(DES):加密秘钥和解密秘钥一致
非对称机密(DES):加密秘钥和解密秘钥不一致 公钥加密 私钥解密
3.https加密协议原理(同时用到对称加密 和 非对称加密) tcp+ssl=https
客户端发送SSL链接 --------------------------------------保管唯一私钥的服务端
接受服务端发送公钥--------------------------------------将公钥发送给客户端
解决中间人劫持(发送CA签名证书 (包含公钥)中间人不能伪造ca证书 客户端会对数字证书进行ca验证 1.如果验证成功则会公钥加密 2.否是会话失效)
CA证书会和第三方验证
客户端发送对称密码(对称密码用公钥加密)----------------------------服务端私钥解析 得到对称加密密码
利用对称秘钥传输数据
4.证书签名生成CA证书
1.验证有没有OpenSSL
2.nginx 是否有 --with-http_ssl_moudle
3.生成秘钥和CA证书
步骤一:生成key秘钥
openssl genrsa -idea -out file.key 1024 输入密码:000000
步骤二:生成证书签名请求文件 csr文件
openssl req -new -key file.key -out file.csr 输入密码:000000 填入一些信息
步骤三:生成证书签名文件 ca文件 -days 3650 签名证书过期时间 不写是一个月
openssl x509 -req -days 3650 -in file.csr -signkey file.key -out file.crt
配置https服务
语法:
syntax: ssl on | off;
default off;
context: http server
syntax: ssl_certificate file; crt文件路径
default -;
context http,server
syntax: ssl_certififacate_key file; key文件路径
default -;
context http,server
HTTPS服务优化
1.激活keepalive
2.ssl session缓存
ssl on;
ssl_session_cache sharid:SSL:10m;
ssl_session_timeout 10m;
keepalive_timeout 10;
Nginx+lua
轻量 、简洁、可扩展 [https://www.runoob.com/lua/lua-tutorial.html]
增大请求并发 高并发场景使用
yum -y install lua
lua enter 进入命令行
注释
--行注释
--[[块注释]]--
变量
a=''
布尔类型只有 nil和false 数字0 空字符串 \0 都是true
lua与nginx环境
LuaJIT
nginx_devel_kit 和 lua-nginx-module
重新编辑nginx
nginx调用模块指令
nginx可插拔模块化加载执行 共11个处理阶段 【https://www.cnblogs.com/-wenli/p/13535173.html】
nginx lua api
https://www.nginx.com/resources/wiki/modules/lua/#nginx-api-for-lua
实战场景 灰度发布 reload(原子发布)
1.用户的信息 cookie 等信息区别
2.根据用户IP地址
栗子:
----------------------------------------------------------------
本文来自博客园,作者:苏子墨,转载请注明原文链接:https://www.cnblogs.com/li-xiaotian/p/16602710.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix