![nginx 目录内所有文件的 valid_referer](https://linux22.com/image/640878/nginx%20%E7%9B%AE%E5%BD%95%E5%86%85%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E7%9A%84%20valid_referer.png)
我有这个配置
location /mirror/files {
valid_referers none server_names example.com *.example.com;
if ($invalid_referer) {
rewrite ^/(.*)$ http://example.com/;
}
index index.php;
}
如果我访问一个链接http://example.com/mirror/files/test.zip引用者以“”开头http://example2.com“我可以访问该文件。如何让它工作?更新:我可以从服务器日志中看到 referer 已发送,因此它不为空。
答案1
好的,原因是我使用了 localhost referer(我的本地开发环境),显然 nginx 会将其视为来自本地服务器,这很愚蠢,因为如果它是本地的,也应该检查 IP。
解决方案是使用真实域名作为引用者或将本地服务器设置为除 localhost 之外的其他服务器名称。