Nginx 学习 --- 动静分离

一.动静分离
1.1 何为动静分离
Nginx动静分离,简单来说,就是动态请求和静态请求分开,也可以理解成使用nginx处理静态页面,tomcat处理动态页面,动静分离从目前实现角度来讲大致分为两种.

  • 纯粹把静态文件独立成单独的域名,放在独立的服务器上(主流推崇方案).
  • 动态跟静态文件混合在一起发布,通过Nginx来分开.

通过location指定不同的后缀名实现不同的请求转发,也可以通过expries参数设置,使浏览器缓存文件的过期时间,从而减少与服务器之间的请求和流量.

Expires具体含义: 给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所有不会产生额外的流量,也就是所谓的客户端缓存。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用Expires 来缓存), 假设一下,把这个Expires设置3d, 表示在3天之内访问这个URL,发送一个请求,对比服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200.
1.2 动静分离目的
为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,来加快解析速度,提高请求的访问效率,降低原来单个服务器的压力,下面是动静分离的原理图.

2. 如何配置
2.1 资源准备

2.2 进行Nginx 配置
找到Nginx 安装目录,打开/conf/nginx.conf 配置文件.

http {
	……

	server {
		listen       80;
		server_name  192.168.17.129;

		location /www/ {
			root	/data/;
			index	index.html index.htm;
		}
		
		location /image/ {
			root	/data/;
			autoindex	on; // 列出访问目录
		}
	}
}

上面的配置,就是当请求是以/www/开始的,则进入/www/data/目录下找资源,如果是以/image/开始的,则进入/image/data/ 目录时,会列出该目录下的所有文件.
修改完配置文件后,记得重启Nginx.
2.3 测试结果
浏览器中输入: http://192.168.17.129/image/01.jpg;

在这里插入图片描述
浏览器中输入地址: http:// 192.168.17.129/image.
因为配置了autoindex on;
在这里插入图片描述
浏览器地址栏输入地址: http: //192.168.17.129/222/a.html;
在这里插入图片描述
3.location
location 前缀可以使用正则表达式

  1. /通用匹配, 任何请求都会匹配到.
  2. =精准匹配,不是以指定模式开头.
  3. ~正则匹配,区分大小写.
  4. ~* 正则匹配, 不区分大小写.
  5. ^~ 非正则匹配,匹配以指定模式开头的location.
    location 匹配顺序
  6. 多个正则,location 直接书写顺序匹配,成功后就不会继续往后面匹配.
  7. 普通(非正则)location 会一直往下,直到找到匹配度最高的(最大前缀匹配).
  8. 当普通location与正则location 同时存在,如果正则匹配成功,则不会再执行普通匹配.
  9. 所有类型location存在时,=匹配 > ^~匹配 > 正则匹配 ? 普通(最大前缀匹配).
location ~*/(css|img|js) {
    root /usr/local/nginx/static;
    index index.html index.htm;
}

aliasroot 区别

location /css {
    alias /usr/local/nginx/static/css;
    index index.html index.htm;
}

root 用来设置根目录,而alias在接受请求时在路径上不会加上location.

  • alias指定的目录是准确的,即location 匹配访问的path 目录下的文件直接是在alias目录下查找的.
  • root 指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的.
  • 使用alias标签的目录块中不能使用rewritebreak,另外,alias指定的目录后面必须要加上/符号!.
  • alias虚拟目录配置中,location匹配的path目录下如果后面不带/,那么访问的url地址中这个path目录后面加不加/不影响访问,访问时它会自动加上/,但是如果location匹配的path目录后面加上/,那么访问的url地址中这个path目录必须要加上/, 访问时它不会自动加上/, 如果不加上/,访问就会失败!.
  • root目录配置中,location匹配的path目录后面带不带/,都不会影响访问.
    4. UrlRewrite路径重写
    rewrite是实现URL重写的关键指令,根据regex部分内容,重定向到replacement, 结尾是flag标记, 语法如下:
rewrite	<regex>	<replacement>	[flag];
关键字 	正则 		替代内容 		flag标记
  • 关键字: 不能改变.
  • 正则: perl兼容正则表达式语句进行规则匹配.
  • 替代内容: 将正则匹配的内容替换成replacement.
  • flag标记: rewrite支持的flag标记. 包含以下关键字:
    last: 本条规则匹配完成后,继续向下匹配新的location URI规则.
    break: 本条规则匹配完成即终止,不再匹配后面的任何规则.
    redirect: 返回302 临时重定向,浏览器地址会显示跳转后的URL地址.
    permanent: 返回301 永久重定向,浏览器地址栏会显示跳转后的URL地址.
  • rewrite: 参数的标签段位置: server, location, if.
    eg:
# 将0-9.html的请求路径,重写为/index.jsp页面
rewrite ^/([0-9]+).html /index.jsp?pageNum=1 break;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值