Spring Cloud:默认从网关重定向到UI

我是微服务和Spring Boot的新手。我有一些Spring Cloud微服务,其Zuul网关运行在端口8080上。

   浏览器

|

|

网关(:8080)

/ \

/ \

/ \

资源用户界面(:8090)

端口8090上有一个UI微服务,该微服务具有一个内部带有方法的控制器,返回index.html。

我为UI配置了这样的Zuul路由(我也在使用Eureka):

zuul:

routes:

ui:

path: /ui/**

serviceId: myproject.service.ui

stripPrefix: false

sensitiveHeaders:

如果我打电话,http://localhost:8080/ui/一切正常,我可以看到我的index.html的呈现。

是否可以通过某种方式配置Spring

Cloud以使以下流程正常工作:调用http://localhost:8080/将我们重定向到UI微服务的控制器,该控制器返回index.html?

因此,想法是从网站的根目录打开UI。

提前致谢!

回答:

最后,我使代码工作了!感谢@pan提到根路径上的Zuul路由问题,以及@RzvRazvan揭示了Zuul路由的工作方式。

我刚刚将 添加到具有一个端点的Zuul路由网关微服务,以从根重定向http://localhost:8080/http://localhost:8080/ui/

@Controller

public class GateController {

@GetMapping(value = "/")

public String redirect() {

return "forward:/ui/";

}

}

从重定向特性 端口 作为http://localhost:8080/ui/

,其实现端口隔离的弹簧启动应用程序 为http://localhost:8090/ui/

zuul:

routes:

ui:

path: /ui/**

serviceId: myproject.service.ui

stripPrefix: false

sensitiveHeaders:

UI微服务的属性:

server:

port: 8090

servlet:

contextPath: /ui

最终,此调用http://localhost:8080/将我们重定向到UI微服务的控制器,该控制器返回view index.html

@Controller

public class UiController {

@GetMapping(value = "/")

public String index() {

return "index.html";

}

}


实际上,在这样的体系结构中呈现静态内容时,我还有另一个问题,但它与我使用Vue.js框架开发的前端配置有关。如果可能对某人有帮助,我将在这里用几句话进行描述。

我具有UI微服务的以下文件夹结构:

myproject.service.ui

└───src/main/resources

└───public

|───static

| ├───css

| └───js

└───index.html

public文件夹的所有内容都是由npm run build任务从 和

生成的。第一次,我打电话给http://localhost:8080/我 了index.html

的所有其他静态资源,因为他们被称为是这样的:

http:\\localhost:8080\static\js\some.js

因此,它为webpack中的静态资产配置了错误的公共路径。我在中更改了它config\index.js

module.exports = {

...

build: {

...

assetsPublicPath: '/ui/',

...

}

...

}

静态资产也因此得到适当的称呼。例如:

http:\\localhost:8080\ui\static\js\some.js

以上是 Spring Cloud:默认从网关重定向到UI 的全部内容, 来源链接: utcz.com/qa/422783.html

回到顶部