联系QQ 284710375
首页 > 技术分享 > LNMP|WAMP
收藏

Nginx动静分离原理及配置方法2022-11-02 08:58:00

大潇博客 原创文章,转载请标明出处

Nginx动静分离是一项比较常用的功能,这个功能一般比较适合中小型网站,使用场景如:

web_app内的H5页面,ERP系统、传统项目等..

可以起到系统加速的作用。


大型网站一般不适用动静分离,因为中小型网站并发量不是特别高,需要分离出来的资源不是特别多,这样就可以把静态资源挪到前置的nginx中,如果是大型系统,文件太多则不太合适。

所以,建议在资源/目录不是特别多的时候使用动静分离


Nginx动静分离原理如下图:

动静分离流程.png


演示一个简单的配法:

假设有两台虚拟机,ip分别是“192.168.159.100”和“192.168.159.101”,两台虚机根目录有相同的文件:

本地虚机文件列表.png


首先在“192.168.159.100”配置一个负载均衡:

配置负载均衡.png


此时访问“192.168.159.100”会被转发到“192.168.159.101”:

负载均衡后访问.png


然后删除“192.168.159.101”中的静态文件:删除静态.png


再次访问“192.168.159.100”,会看到样式和图片都没了:

打开无静态.png


在“192.168.159.100”中配置静态文件访问本地,不进行负载均衡转发:

配置简单动静分离.png


再次访问“192.168.159.100”,页面样式和图片均正常显示:

配置简单动静分离后访问.png

这是由nginx返回的静态资源,这样一个简单的动静分离就配置完成


细节:

这里有个细节需要注意,倘若访问的路径中包含文件夹,也就是项目的根目录在文件夹中

如访问“192.168.159.100/page”,同样使用上面配置的负载均衡器,会转发到“192.168.159.101/page”目录下

负载均衡到文件夹.png

此时做动静分离时,再使用上面的配置方法,会报404找不到文件,实际就是规则有出入,转发到别的文件夹了,这种情况需要改变匹配规则

如下图,在location前,加上文件夹名称即可,表示从哪个位置开始

静态资源访问本地.png

正常访问

负载均衡到文件夹后访问.png

这里只是举个容易理解的例子,实际应用如遇类似问题,可参考解决


优先级:

所有的请求都会被匹配到以“/”斜线开头的location下,这是默认的规则

通过上面的案例可以看出,单以“/”斜线开头的location,优先级比较低,只要配置了其它规则的location,匹配优先级都高于以斜线开头


正则:

使用上面案例中的方法写location,目录非常多时,就要写很多个location,想把多个location合并到一个,可以使用正则表达式,直接在location后面写正则就可以

使用“~”开头,表示要使用正则了

动静分离正则匹配.png


正则说明:

/ 通用匹配,任何请求都会被匹配到

= 精准匹配,不是以指定模式开头

~ 正则匹配,区分大小写

~* 正则匹配,不区分大小写匹配

^~ 非正则匹配,匹配以指定模式开头的location


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311