我想阻止所有域对特定 php 文件的访问。我知道我可以使用
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
return 444;
}
例如,在服务器块中,但是我想为所有域设置它,例如预过滤器。
另一个可能的想法是在每个域配置中添加一个包含并指向同一文件来加载此规则。但我认为这在 nginx 中是可能的,在 Apache 中也是可能的。
答案1
一个简单的方法就是使用include
确实。这不需要对 NGINX 进行任何添加。
否则,您可能正在寻找 WAF 模块,现在有 3 个著名的模块 - ngx_waf、Modsecurity 和 naxsi。每个的配置都不同,但我认为它们将允许您在“一个地方”执行此操作,而不是使用包含。
如果可以的话,您可以创建自己的 NGINX 模块。但可能有点矫枉过正......但仍然是一个想法,如:
http {
# applied to all websites
bad_files xmlrpc.php .env;
bad_files_status 444;
}
对于熟悉 C 的人来说,这样的模块相对容易完成。
我会顺着include
路走。在每个服务器块中重复include
不是问题,特别是如果您使用配置工具(例如ansible
模板化 NGINX 配置)。