2015-11-20 65 views
0

我試圖管理部署到運行在配置爲負載平衡器的nginx plus服務器後面的服務器。應用服務器使用proxy_pass指令從nginx發送流量,我想要做的是默認情況下將流量定向到一個上游,但是我們將部署到備用實例的流量定義爲另一個測試;我試圖通過讓開發人員在瀏覽器中設置一個頭來選擇這個,然後nginx查找併爲相關代理設置一個變量。基於標題的nginx條件代理傳遞

看來這一切都是明智的,但它根本行不通 - 我不確定是否誤解它是如何工作的,但它確實看起來很奇怪。

的上行流被配置爲

upstream site-cluster { 
    zone site 64k; 
    least_conn; 

    server 10.0.6.100:80 route=a slow_start=30s; 
    server 10.0.7.100:80 route=b slow_start=30s; 

    sticky route $route_cookie $route_uri; 
} 

upstream site-cluster2 { 
    zone site 64k; 
    least_conn; 

    server 10.0.6.30:80 route=a slow_start=30s; 
    server 10.0.7.187:80 route=b slow_start=30s; 

    sticky route $route_cookie $route_uri; 
} 

然後這個代碼是在位置/塊。

map $http_x_newsite $proxyurl { 
    default http://site-cluster; 
    "true" http://site-cluster2; 
} 

proxy_pass $proxyurl; 

不管我是否設置標題,它總是發送流量的默認服務器。

任何想法?

回答

0

map指令應該在HTTP上下文沒有位置: Syntax: map string $variable { ... } Default: — Context: http

其餘看上去很聰明,對我的作品。