2016-08-23 60 views
9

我知道,nginx可以配置爲充當負載均衡器,但我想知道是否有可能在代理之間進行負載平衡?比方說,我有多個在本地主機上運行的代理,並且我想使用nginx提供單個連接點,以便我可以在代理之間輪換。我正在嘗試實現類似於here的後續操作,該操作使用HAProxy而不是nginx。我有以下nginx.conf如何配置nginx充當代理的負載均衡器?

events { } 

http { 
    upstream proxies { 
     server localhost:9998; 
     server localhost:9999; 
     server localhost:10000; 
    } 
    server { 
     listen 8080; 

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

然而,當我發送一個捲曲的請求是這樣的:

curl http://icanhazip.com -x localhost:8080 

它忽略了網址,我也得到類似的東西,如果我有我期望的迴應直接發送一個請求,像這樣的代理服務器之一:

curl localhost:9999 

當然,我真的沒有想到它的工作,因爲必須有一些選項來告訴nginx的治療UPS tream服務器作爲代理本身。但是,在線搜索後,我無法找到如何做到這一點。

+0

我不確定你的問題,你的問題是什麼,你叫什麼叫代理 - 因爲你在這裏你的nginx負載均衡也是一個反向代理 - ?你的問題是你有沒有主機頭?嘗試在proxy_pass指令之後添加'proxy_set_header Host $ host;'。 – regilero

+0

我正在嘗試使用nginx在我設置的多個代理之間輪換。換句話說,我希望能夠作爲代理連接到nginx主機和端口(即localhost:8080),並且它將在我設置的代理之間旋轉 –

+0

好了,您是否嘗試過主機的東西?因爲反向代理幾乎是透明的,所以nobdy會關心被代理的後端是最終服務器還是一些代理,但是您需要知道您正在動態轉發到代理的域是什麼。 – regilero

回答

1

,你可以在你的HAProxy的後HAProxy的AKT看到作爲轉發代理

選項HTTP_PROXY

什麼這個選項的意思是在手動https://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-option%20http_proxy

描述

它有時會發生人們需要一個純粹的HTTP代理,其中 可以理解基本代理請求而無需緩存,也不需要任何花哨的 功能。在這種情況下,可能需要使用「選項http_proxy」設置HAProxy實例 。在這種模式下,沒有服務器被宣佈, 和連接轉發到IP地址和端口 的URL發現後的「http://」方案。

不進行主機地址解析,所以當純 IP地址通過這僅適用。由於此選項的使用範圍相當有限,因此只能由專家知道他們完全需要 。這與HTTP隧道模式不兼容。

就我所知,nginx沒有這個功能。

一個類似的問題吧。 https://superuser.com/questions/604352/nginx-as-forward-proxy-for-https

爲什麼你不能使用鏈接文章中描述的haproxy?

+0

HaProxy不允許您在配置中包含文件。我想管理一個導入的proxies.list文件。 Nginx是否包含,但顯然你不能轉發請求到一個HTTP代理? – chovy

0

服務器之間的分佈式您將需要配置代理服務器或者加權或其他

負載平衡規則

類似max_fails = 1 fail_timeout = 10s;

 Can you put max_fails =1 and fail_timeout=10s; after the proxies 

    server localhost:9998 max_fails =1 and fail_timeout=10s; 
    server localhost:9999 max_fails =1 and fail_timeout=10s; 
    server localhost:10000 max_fails =1 and fail_timeout=10s; 


    change location /{ 
     to location @proxy{ 
+0

你能提供完整的例子嗎? – chovy