一.Location优先级顺序
配置Nginx Location的时候如何确定Location匹配的优先级如下图:
精准匹配=或者~^优先级:1 > 正则~或者~*匹配 > 空修饰符(一般匹配,取URI匹配最长的) > / (任意通用匹配)
二.目录穿越漏洞
如下配置Nginx Location:
1 | location /file { |
此时如果你的/var/www/目录下存在一个.env文件,那么我们可以通过访问:
http://localhost/file../.env
查看到.env文件的内容.
在配置location提供web静态资源访问的时候特别注意,否则造成目录穿越访问,泄漏相关数据。原理就是, nginx拿到/file后面的路径,和root拼接,最后读取这个路径的文件内容(/var/www/html/../.env) 此时文件存在,则能访问到内容.
为了避免这个目录穿越访问问题,我们可以这么配置, 将/file/完全闭合:
1 | location /file/ { |
此时再访问http://localhost/file../.env 将访问不到了.