2016-07-08 32 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

它仍然是錯誤的邏輯 –