nginx日志何时存在特定的引荐来源

由于有人从我们的网站窃取内容,我需要创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; } ... }