2017-06-05 95 views
1

我試圖創建一個基本的nginx LB,它將請求重定向到同一上游服務器,如果url路徑不依賴發件人cookie/ip而重複發送。動態地將具有相同url路徑的所有請求重定向到相同的上游服務器

例如可以說我有一個名爲LB A.com和目標稱爲A.com/target。 第一次發送請求到A.com/target LB會重定向到上游的一個隨機服務器,到目前爲止這麼好,問題在於第二個請求具有相同的url路徑(不誰提出這個請求,因此cookies不存在問題)我需要LB重定向到它上次重定向到的同一個服務器。

我只是不能讓它正常工作,所以我想問問任何人是否有正確的方法來做到這一點與nginx或任何其他簡單的LB.

回答

1

在版本1.7.2中引入的nginx上游哈希功能的幫助下,您可以通過URL進行平衡。 官方文檔在這裏here

upstream backend { 
    hash $scheme://$host$request_uri; # put any variables here 

    server backend1.example.com; 
    server backend2.example.com; 
    server backend3.example.com; 
} 
+0

我可以在uri中的特定部分上執行它,例如對照正則表達式Capture組運行它嗎? – Rewire

+0

當然。將$ scheme:// $ host $ request_uri替換爲$ myvar,並將包含myvar的位置定義爲命名捕獲。位置〜^ /(?。*)$爲例。 – silinxey

相關問題