nginx实现动静分离实战

Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项,在

Nginx静态理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项,在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式。

nginx location的正则法则:

~ 为区分大小写的匹配。

~* 不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)。

!~ 不匹配的

!~* 不匹配的

. 匹配除换行符以外的任意字符

location 匹配的优先级(与location在配置文件中的顺序无关)

= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。

普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。

^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。

最后匹配理带有”~”和”~*”的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。

 location / {
 proxy_pass http://127.0.0.1:8080;
 proxy_redirect off;
 proxy_set_header HOST $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 client_max_body_size 10m;
 client_body_buffer_size 128k;
 proxy_connect_timeout 90;
 proxy_send_timeout 90;
 proxy_read_timeout 90;
 proxy_buffer_size 4k;
 proxy_buffers 4 32k;
 proxy_busy_buffers_size 64k;
 proxy_temp_file_write_size 64k;
 }
 #error_page 404 /404.html;
 location ~* \.(html|htm|shtml|gif|jpg|jpeg|bmp|png|ico|js|mp4|css)$ { 
 root /home/www/static/show; 
 #expires
 expires 3d;
 }

注意一点的是:

我之前走了岔路,想用Application相对路径+文件路径的正则来匹配,调试了半天都没有通过。在线的正则匹配不支持nginx的规则。

经同事提醒,可以使用文件的相对路径正则+root到相应静态文件的目录,例如

root /home/www/static/show;

而不是location的正则。

参考文献:

https://www.jianshu.com/p/4a3dd77fe3e5

http://blog.csdn.net/gzh0222/article/details/7845981

http://blog.csdn.net/kobejayandy/article/details/20805059

版权声明:(nginx实现动静分离实战)旨在分享知识。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件标题或链接至 itousu@foxmail.com ,本站将立刻删除。
(0)
上一篇 2020年1月1日 下午2:27
下一篇 2020年1月1日 下午2:57
hao123w, hao123生活号 - 让生活更简单!,更多信息请访问 http://www.hao123w.com/