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=''

布尔类型只有 nilfalse  数字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地址

栗子:
posted @   苏子墨  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示