我使用以下标准配置来阻止从 nginx 下载隐藏文件:
#Prevent (deny) Access to Hidden Files with Nginx
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
但此配置也会阻止真正的请求,例如:
2013/10/09 17:24:46 [error] 20121#0: *593378 access forbidden by rule, client: XX.55.XXX.201, server: XYZ.org, request: "GET /vip/validate.php?id=dfddfQ&title=.Mytitle HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "xyz.org"
答案1
您可以通过在 error.log 中添加“debug”来调试 nginx 配置中哪个位置应用于您的请求:
error_log /path-to/error.log 调试;
2015/09/24 16:22:12 [调试] 16458#0:*1539 http 脚本复制:“/static.php” 2015/09/24 16:22:12 [调试] 16458#0:*1539 http 脚本参数 2015/09/24 16:22:12 [调试] 16458#0: *1539 http 脚本复制:“resource=” 2015/09/24 16:22:12 [调试] 16458#0:*1539 http 脚本捕获:“frontend/Magento/luma/en_US/mage/calendar.css” 2015/09/24 16:22:12 [调试] 16458#0:*1539 http 脚本正则表达式结束 2015/09/24 16:22:12 [调试] 16458#0: *1539 测试位置:“/” 2015/09/24 16:22:12 [调试] 16458#0:*1539 测试位置:“pub” 2015/09/24 16:22:12 [调试] 16458#0: *1539 测试位置:“static/” 2015/09/24 16:22:12 [调试] 16458#0: *1539 测试位置:“设置” 2015/09/24 16:22:12 [调试] 16458#0:*1539 测试位置:~“/\。” 2015/09/24 16:22:12 [调试] 16458#0:*1539 测试位置:~“/media/theme_customization/.*\.xml$” 2015/09/24 16:22:12 [调试] 16458#0:*1539 测试位置:~“^/errors/.*\.(xml|phtml)$” 2015/09/24 16:22:12 [调试] 16458#0:*1539 测试位置:~“cron\.php” 2015/09/24 16:22:12 [调试] 16458#0:*1539 测试位置:~“\.php$” **2015/09/24 16:22:12 [调试] 16458#0: *1539 使用配置“\.php$”**