2015-10-09 39 views
2

我們使用三個相同服務實例,它們在eureka中註冊。他們面前有zuul。Zuul或eureka將主機標頭設置爲服務實例主機

每當我們的服務嘗試重定向到其中一個控制器(例如/ login)時,它將直接轉到hostname:port(在瀏覽器地址字段中可見),而不是再次通過zuul proxy。這給了我們超時。 我們正在跟蹤服務的標頭 - 有host標頭設置爲我們服務的主機名。

不應該使用x-forwarded-host的地址嗎?如何強制zuul/eureka做到這一點?或者我們應該調整一些彈簧引導配置來代替它使用它host

+1

如果您使用spring mvc utilities(不記得哪些或者我將它放在答案中)構建重定向(而不是/ context)的絕對URL,它們將遵循代理標頭。這就是spring-data-rest如何在zuul後面工作(而不是重定向,它是鏈接網址)。 – spencergibb

回答

2

您的服務正在向它自己的主機發送位置標題。您可以修改該服務,以便引用您的基本主機,或者編寫一個zuul過濾器,將其發送到客戶端之前修改響應頭。

下面是過濾器的指南:https://github.com/Netflix/zuul/wiki/Writing-Filters

您可以通過RequestContext修改標題。

如果您從您的過濾器中創建一個bean,它將代表您進行註冊而無需任何操作。

+0

謝謝你,似乎zuul正在改變'主人'頭。現在我們從nginx傳遞'x-forwarded-host',並將它設置爲ZuulFilter中的'host',作品:) – freakman

+0

可以分享你的過濾器代碼嗎? –