2016-07-08 161 views
0

我有本地服务器运行在3000端口,它发送一些POST请求到nginx服务器。 Nginx应该检查引用者,如果它不是来自127.0.0.1:3000(包含所有子域名),则返回403 Restricted,否则如果它有效,则重定向到9200/errors/browser端点。nginx - valid_referes不工作

目前,无论引用者是否有效,它总是重定向。我知道在nginx中如果是邪恶的,那么if-else方法在这里不起作用。

server { 
    listen 127.0.0.1:9999; 
    server_name localhost;  

    location/{ 

     valid_referers none blocked server_names ~someaddress; 

     if ($invalid_referer) { 
      return 403; 
     } 

     # redirect to this endpoint if referer is valid  
     return 307 http://localhost:9200/errors/browser;  

    } 
} 
+0

'Referer'是您在浏览器地址栏中看到的内容。你真的看到'127.0.0.1:3000'吗? –

+0

而且无论如何,我在有效查阅者列表中看不到'127.0.0.1:3000' –

回答

-1

我要补充

if ($invalid_referer != "1") { 
    return 403; 
} 

,因为它是根据documentation

$ invalid_referer 空字符串空字符串,如果“引荐”请求头字段值被认为是有效,否则为“1”。

+0

空'$ invalid_referer'意味着引用者有效。你为什么要把403返回给有效的引用者? –

+0

@AlexeyTen,对,我应该编辑它,正确的选项是'$ invalid_referer!=“1”'谢谢 – Novitoll

+0

它仍然是错误的逻辑 –