在项目中内嵌了一个iframe,iframe加载过程中有个js,经过压缩后大约有10M。这极大地减慢了页面加载的速度,由于这个js是固定的,并不会改变,所以采用静态资源的形式使用nginx加速存取。
1.目标js的url
目标js的url:http://localhost/myapp/myprefix/username/static/lab/xxxxxx.js
这个js我们可以拆分成三个部分:
- 第一部分:
http://localhost/myapp/myprefix
这一部分是固定的,每一次请求都是这个前缀 - 第二部分:
/username
这一中间部分是变量,每一个不同的用户进行请求都不相同 - 第三部分:
/static/lab/xxxxxx.js
这是最后的后缀部分,每个请求也是相同的
由此可见,我们对于这些js的转发关键就是在于怎么将用户名这一变量排除在我们nginx的正则规则之外。
2.nginx的location内转发规则
location中有几个常用的转发关键词,我们分别简单看一下用法:
由于我们这里只需要把js转发出去,所以匹配到对应的url后使用alias是最简便的
3.正则的匹配
// 使用如下正则即可
location ~ ^(.+)/(.+)/(.+)/static/lab/(.+)$ {
alias /data/$4;
}
// 将js文件放到/data目录下即可
// 如果对nginx转发的情况想多了解一下可以查看日志
// /var/log/nginx/access.log 正常转发的日志
// /var/log/nginx/error.log nginx转发出错的日志
正则匹配规则
简单地学一些正则:
- ^ 代表以什么开头的匹配
- $ 代表以什么结尾的匹配
- ~ 代表区分大小写匹配
了解这些对于本需求就足够了,有更复杂的应用场景可以多学一点正则!
标签:.+,log,js,nginx,正则,转发,加载 来源: https://blog.csdn.net/weixin_44617722/article/details/116352148
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。