2017-06-13 60 views
0

希望瞭解是否有任何方法可以迫使NGINX從它背後的一臺特定服務器提供請求。從NGINX後面的特定服務器獲取HTTP響應

我在查詢NGINX服務器,我從兩個不同的服務器得到響應。我可以通過查看響應中的「服務器」標題來說明這一點。一個服務器在提供數據方面一直比其他服務器慢。有什麼方法可以讓NGINX從更快的服務器提供內容?

即使你能指出我的方向 - 這將會有所幫助。

回答

0

您可以通過多種方式做到這一點,您可以創建一個upstream pool並將請求傳遞給它,也可以通過location塊來完成。 Nginx也提供一些load balancer strategies來幫助像你這樣的情況。

使用上游:

upstream backend { 
    server 192.168.0.10; # Fast server 
    server 192.168.0.11; # Slow server 
} 

server { 
    listen 80; 
    server_name example.com; 

    location/{ 
     proxy_pass http://backend; 
    } 
} 

使用位置塊:

server { 
    listen 80; 
    server_name example.com; 

    location/{ 
     proxy_pass http://192.168.0.10; 
    } 
} 

負載平衡策略

最少連接 - 使用服務器與所述至少活動會話:

upstream backend { 
    least_conn; 
    server 192.168.0.10; # Fast server 
    server 192.168.0.11; # Slow server 
} 

會話持久性 - 航線同一用戶爲每個請求相同的後端:

upstream backend { 
    ip_hash; 
    server 192.168.0.10; # Fast server 
    server 192.168.0.11; # Slow server 
} 

加權平衡 - 發送更多的請求比另外一個服務器:

upstream backend { 
    server 192.168.0.10 weight=3; # Fast server 
    server 192.168.0.11; # Slow server 
} 

這一戰略將導致快速服務器爲每個請求服務3個請求提供慢速服務器服務。

+0

謝謝你的答案,但我試圖從客戶端做到這一點。我無法訪問Nginx服務器本身。你會提出一些我可以查詢Nginx的策略,這樣我的請求就會被轉發到更快的服務器上。我看到一些建議,發送空參數,使用沒有緩存頭等,但似乎沒有工作。但是,是的..我正在嘗試從客戶端做到這一點。 –

+0

僅從客戶端就很難,因爲平衡策略是在服務器端決定的,所以你很難做到。 – sjdaws