2016-07-07 47 views
0

我有一個使用haproxy的招搖。我使用內置的招搖在WebSphere Liberty配置文件(apiDiscovery功能):由haproxy代理的Swagger無法執行請求

瀏覽器-swagger.mydomain.com-> HAProxy的-swagger.intranet-> IBM與自由揚鞭

產生第一個招搖頁服務器在瀏覽器中正確顯示,但由於Liberty服務器從haproxy(而不是我的瀏覽器)獲取請求,並將其獲取到Intranet名稱/ IP(swagger.intranet),執行GET,POST等的Swagger代碼是使用該Intranet生成的IP名稱(swagger.intranet),所以當我嘗試使用任何方法時,它們將不會在該區域外的瀏覽器中引用該內部IP名稱。

我可以使用某個標頭配置haproxy來通知haproxy他應該使用請求中使用的原始服務器名稱(swagger.mydomain.com)請求生成代碼嗎? (這是在生成的HTML/Javascript代碼中使用的那個)

謝謝。

回答

1

Liberty信任Host:頭並用它來組裝自我參照鏈接。

在其中定義後端,嘗試設置http-request set-header Host swagger.mydomain.com哪些客戶端將使用或移除類似的節,如果你是它已經設置一些swagger.intranet。

(對不起,我不是一個HAProxy的用戶,這是基於搜索「HAProxy的等效ProxyPreserveHost的」)

+0

非常感謝您的回覆。事實證明,問題不在HAProxy中,而是在Liberty中。它從default_host值生成Swagger到IP。 Localhost或swagger.intranet,但不會根據主機標頭值生成。它顯然在本地工作,因爲它始終是本地主機,但是當我將它部署到Docker而不是haproxy時直接映射端口時,問題是相同的。我需要在我的主機文件中包含一個假條目,以使瀏覽器調用正確的IP。有任何想法嗎? – icordoba

+0

壞主機首先出現在哪裏?在重定向,或在一些HTML? – covener

+0

在自由建在Swagger。 Swagger文檔已生成,但是當我嘗試使用該swagger測試請求時,該調用指向Liberty默認主機,而不是原始請求中使用的外部IP名稱。 – icordoba