2017-06-21 114 views
0

我試圖運行清漆與兩個後端,需要完全主機名。但我的nginx正在收到一個本地主機主機頭。光油host_header沒有發送到後端

這是我的配置:

probe healthcheck { 
    .url = "/"; 
    .interval = 5s; 
    .timeout = 15s; 
    .window = 5; 
    .threshold = 3; 
} 

# Define the list of backends (web servers). 
# Port 443 Backend Servers for SSL 
backend bimer1 { 
    .host = "nginx-proxy"; 
    .host_header = "site1.example.com.br"; 
    .port = "80"; 
    .probe = healthcheck; 
} 

backend bimer2 { 
    .host = "nginx-proxy"; 
    .host_header = "site2.example.com.br"; 
    .port = "80"; 
    .probe = healthcheck; 
} 

這是我nginx的訪問日誌:

bimer緩存,nginx的-SSL-proxy_1 | 172.17.0.3 - - [21/Jun/2017:13:41:47 +0000]「POST /ws/Servicos/Geral/Localizacoes.svc/REST/LocalizarPessoas HTTP/1.1」502 575「 - 」「Mozilla/5.0 X11;的Linux x86_64的)爲AppleWebKit/537.36(KHTML,例如Gecko)Chrome瀏覽器/ Safari瀏覽器59.0.3071.104/537.36" < - >本地主機172.17.0.1,172.17.0.3

它看起來像一套HOST_HEADER參數到後端不致力於定期的請求。但健康檢查工作正常。

回答

0

Varnish是一個透明的HTTP代理。它將轉發到後端,無論Host標題是由客戶端(您的瀏覽器)發送給它的。因此,如果您通過http://localhost/訪問了它,那麼localhost是您的後端將在Host標題中看到的內容。

另外,你大多不應該在varnish後端定義中使用DNS名稱。它應該是這樣的,而不是:

backend bimer1 { 
    .host = "1.2.3.4"; 
    # ... etc. 

目前已配置的後端解析爲相同機nginx的代理。 access.log的結果也不是來自健康檢查。 (您配置的健康檢查將顯示爲訪問根URL /)

也許您誤解了光油配置。如果您的計劃是通過同一臺計算機爲多個網站提供服務,那麼您應該只使用一個後端。多個後端適用於多臺機器。

+0

嗨@ daniel-v,我在同一臺機器上使用nginx,因爲我需要緩存的服務器帽只接受HTTPS連接。然後我使用NGINX作爲這些服務器的SSL代理。 – ePhillipe

+0

您的用例中只需要一個後端定義。 –