2016-06-21 51 views
0

我已經成功(據我所知)創建一個httpd反向代理服務器從面向服務器到另一個非互聯網服務器。我還使用haproxy創建了一個路由表,將特定請求路由到特定端口上的特定其他服務器。我們分別稱它們爲服務器A,B和C,其中C表示被路由到的服務器和端口列表。httpd Reverseproxy服務於HTML頁面服務的所有文件

由於我們的服務器架構,這是唯一能夠在預期服務器上向互聯網提供數據的途徑。

當我在https serverA.com/jira訪問站點時,我將A發送給B,使用http serverB/jira將基於/ jira的路由發送到C託管我們的內部jira實例的服務器,位於http serverC:somePort

我從jira獲取頁面,但它沒有格式化,並提到該頁面是斷開的鏈接。前往Firefox的調試器我在網絡標籤中看到,頁面jira返回一個404錯誤,但隨後幾個其他的GET被放置,因爲接收到的HTML頁面的內容,他們都得到了404'd,這是有道理的,爲什麼頁面沒有格式化。

我的主要問題是這樣的:httpd使用基於/ jira的位置塊,但是當額外的GET請求被髮送時,它們被髮送到https serverA.com/additionalFiles.(css,js等)爲此服務器不會正確地反向代理。有沒有辦法將傳入的html頁面中的所有請求更改爲jira/additionFiles而不是additionalFiles,或者讓httpd服務繼續爲其餘的依賴關係(我知道http是無連接的)提供反向代理服務?如果不是,最好的做法是什麼?

我的第二個問題與第一個問題一起,爲什麼我在初始頁面加載中看到404以及如何將其更改爲200?

回答

0

我們的解決方案是在前端服務器上使用stunnel,並將所有https流量路由到服務器B,然後將服務器B分發到流量應該去的地方。我正在使用服務器C並讓他們使用服務器A作爲代理,以便所有數據都能正確服務,而服務器B只是一箇中間人。