Nginx:拒绝在目录及其所有子目录中运行的脚本

假设我的网站允许用户创建目录以及上传到名为“/ uploads”的目录,如下所示:

/上传/ user_created_folder_1

/上传/ user_created_folder_2

/上传/ user_created_folder_3

… 等等等等

如何防止在“/ uploads”及其所有子目录中执行任何潜在的恶意脚本?

服务器块中的以下代码是否正确?

location /uploads/.*.(PHP|pl|py|jsp|asp|sh|cgi)${
                return 403;
                error_page 403 403.html;
        }

非常感谢!

最佳答案
首先,Nginx不执行脚本.在某些情况下,它可以将请求代理到执行脚本的其他服务器.最常见的情况是请求中文件的扩展,典型的Nginx配置块如下所示:

location ~* \.PHP${
  fastcgi_pass backend;
  ...
}

所以你的问题应该是:如何防止代理请求文件夹/上传/?通过这种典型的配置答案就像:

location ^~ /uploads/ {
}

这意味着:如果请求文件上传,只是将它们作为静态文件提供,不要试图为它们寻找正则表达式位置(这需要您了解不同类型的Nginx locations).

如果您的配置与典型配置有很大不同,我们需要看到它以给您正确的答案.

相关文章

一、Linux下Nginx的安装 1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使...
一、空格:默认匹配、普通匹配 location / { root /home; } 二、= :精确匹配(表示匹配到 /home/resou...
``` nginx -c 配置文件路径 ``` ``` /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.con...
前言 nginx可所谓是如今最好用的软件级别的负载均衡了。通过nginx的高性能,并发能力强,占用内存下的特...
1.ngnix概念 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄...
博客园从今天上午就开始报502错误 , 他的原因还不知道 , 暂时先说下我们遇到502的排查情况 最大的可能性...