我有幾個spring引導微服務,它們通過雲環境部署到JBoss。這些引導服務是Eureka客戶端,它將自己註冊到Eureka服務器。以下是一個例子:zuul eureka服務id重定向
eureka:
client:
healthcheck:
enabled: true
serviceUrl:
defaultZone: ${DISCOVERY_URL:http://localhost:8761}/eureka/
instance:
ip-address: 127.0.0.1
appname: user-regn-service-app
home-page-url-path: /user-regn-service-app
它註冊的應用與尤里卡名稱爲用戶REGN服務,應用 Eureka Homepage
的wildfly服務器在8080上運行和用戶REGN服務,應用程序部署在上下文路徑/ user-regn-service-app中。 所以REST API是如下
localhost:8080/user-regn-service-app/regnUser
當我使用zuul作爲API網關的配置是如下
zuul:
prefix: /api
routes:
test:
path: /test/**
service-id: USER-REGN-SERVICE-APP
strip-prefix: true
ribbon:
eureka:
enabled: true
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
registerWithEureka: false
但每當我正在調用zuul API網關是無法識別上下文路徑並重定向到localhost:8080而不是localhost:8080/user-regn-service-app。
http://localhost:8765/api/
- > 404未找到
http://localhost:8765/api/user-regn-service-app/
- > Wildfly默認主頁
http://localhost:8765/api/user-regn-service-app/user-regn-service-app/regnUser
- >重定向到用戶註冊。
預期行爲:http://localhost:8765/api/test/regnUser
應該重定向到用戶註冊。
我幾乎嘗試了所有從Zuul和Eureka之間的博客中獲得的組合,以完成以下工作,但沒有運氣。請提醒我是否缺少一些東西。
我已經嘗試使用自定義zuul自定義篩選器,但它不會轉發到必需的上下文路徑。代碼是如下
@Component
public class ZuulApiFilter extends ZuulFilter{
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
System.out.println("original"+ ctx.get("requestURI"));
HttpServletRequest request = ctx.getRequest();
String requestURI = request.getRequestURI();
String contextAwareURI=requestURI.concat("user-regn-service-app/");
ctx.set("requestURI", contextAwareURI);
return null;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public int filterOrder() {
return 1;
}
@Override
public String filterType() {
return "pre";
}
}
的requestURI設定新的URI以及 ctx.set( 「requestURI」,contextAwareURI)後不改變; request.getRequestURI();僅顯示舊的請求URI。
如果我讓假我可以訪問以下 的http://本地主機:8765/API /用戶REGN服務,應用程序/ - > Wildfly主頁 的http://本地主機:8765/API /用戶REGN服務,應用/用戶REGN服務,應用程序/ userRegn - >服務 不知道任何配置丟失 –
這是混亂的,您使用JBoss和WebLogic的? 如果API在'監聽localhost:8080'以及使用應用程序上下文'用戶REGN服務,app'這意味着請求應被髮送到'HTTP://本地主機:8080 /用戶REGN服務,應用程序/ <資源>'。 stripPrefix被設置爲真,如果API(未Zuul服務)的上下文路徑設置爲/ – ootero
很抱歉的混亂,我使用JBoss Wildfly此服務和它部署在上下文根/用戶REGN自行修理應用在8080 的http://本地主機:8080 /用戶REGN服務,應用程序/ <資源>工作正常,但zuul無法重定向到指定的服務。我在配置中丟失了什麼? –