2017-06-14 95 views
-1

我有一個場景,當服務器在實際請求之前需要執行授權請求時。所以,一個請求由兩個不同的服務提供。Nginx中的請求序列

Nginx的位置必須由Auth-Service處理,如果響應狀態是200 OK,那麼請求應該被轉發到Feature-Service。否則,如果響應狀態401,那麼這個狀態應該被回覆到​​前端。

upstream auth_service { 
    server localhost:8180; 
} 
upstream feature_service { 
    server localhost:8080; 
} 
location /authAndDo { 
    # suggest here 
} 

nginscript中的代碼片段也是可以的。

+1

問服務器配置問題的適當平臺是serverfault.com,而不是SO,它脫離了主題:「專業服務器,網絡或相關基礎設施管理的問題對於堆棧溢出而言是無關緊要的,除非它們直接涉及編程或編程工具。「https://stackoverflow.com/help/on-topic – Rob

+0

@Rob我想它涉及到nginscript編程。我認爲不可能避免腳本爲ngx loc創建這樣的序列。 – yvs

+1

你可以告訴我們你到目前爲止嘗試過的代碼片段,並具體解釋什麼不能正確地與這些嘗試一起工作嗎? – csmckelvey

回答

2

一般來說,這樣的網站服務器是不可能的。 401是前端響應,並提供HTTP WWW-Authenticate響應頭。根據需要開發Web應用程序或編輯401文件。 HTTP 401 has RFC specification。用戶,瀏覽器應該瞭解該消息。 Nginx doc described how 401 will be handled

Nginx的社區版的auth_request將僅在子請求返回HTTP 200,否則爲401不會重定向,而不是401默認多個過程,其他頭不會處理保護應用程序&用戶的響應。 Nginx社區版甚至不支持HTTP/2的所有功能。它會變得更糟。

Apache2 Web服務器具有完整的HTTP/2支持和custom 401 location in auth module,只能在少數瀏覽器上運行。很少有瀏覽器允許Apache2完美地完成這項工作。其他人顯示無法加載頁面。在Stack Exchange網絡的各個民族之前,人們要求Apache2使其適用於所有瀏覽器。

幾乎可以在Nginx的重定向:

error_page 401 /401.html; 

location ~ (401.html)$ { 
    alias /usr/share/nginx/html/$1; 
} 

的另一種方式,可以使用反向代理與另一臺服務器like peoples talking here on Github。我無法保證加載頁面失敗。