由于有人从我们的网站窃取内容,我需要创build额外的日志文件,只有在http_referrer包含特定的域时才会logging日志文件。
目前我有这个:
if ($http_referer ~* (bad-domain.com)){ return 500; }
但是,而不是返回500,我需要返回正常的响应,但logging请求。
access_log指令在内部是有效的,所以你可以简单地在那里添加一个。
但是 ,它的存在覆盖了层次结构中出现在其上的任何一个,所以如果只需添加一个条目,则请求将不会logging到您通常logging到该服务器的任何访问日志中。
为了解决这个问题,你可以在if使用两个 access_log指令,一个重复常规的访问日志,另一个指向你的特殊访问日志(如果你愿意,也可以使用不同的log_format )。
只要把access_log放在里面,不起作用
不过access_log只在里面的位置和从这个线程里面我们可以看到解决方法:
独立的Nginx访问日志文件仅用于某些请求
if ($http_referer ~* (bad-domain.com)){ set $bad_domain 'yes'; } location / { if ($bad_domain = 'yes') { access_log logs/bad_domain.log; return 200; } ... }