如何在nginx上阻止某些类型的所有文件扩展名

时间:2011-11-27 14:21:26

标签: nginx

我在nginx前端后面运行了很多网站。我的所有网站都在Python / Django中。我在日志中看到很多黑客为各种php应用程序爬行 - 我想在nginx上阻止它们(返回404),而不会攻击我的应用程序服务器。

我想在我的nginx conf文件中全局执行此操作,因此它适用于我所有特定于站点的配置。

那么,我该怎么做:

  1. 为.php
  2. 类型的所有扩展名返回404
  3. 为某些字符串的部分匹配返回404,例如“phpmyadmin”

4 个答案:

答案 0 :(得分:21)

尝试:

location ~ (\.php$|myadmin) {
    return 403;
}

答案 1 :(得分:5)

location必须仅显示在server内,http内不允许显示。

因此,唯一的选择是创建一个包含公共位置的文件,并将include创建到server中。

答案 2 :(得分:3)

补充Dayo答案,我们还必须添加一个尾随的美元,否则任何像jquery.mousescroller.js这样的文件也会被阻止。

location ~ (\.php$|myadmin) {
    return 403;
}

答案 3 :(得分:0)

您还可以尝试if和正则表达式。例如。为了使用排除规则为静态文件提供服务器,我按照以下步骤进行操作,以便从其他文件夹树中提供调试js文件。 :

location /some/virtual/path/ {
    if( $request_uri !~ '\.js$' ) { return 404 ; }
    alias /some/real/path/
}