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/
:
@Controllerpublic 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
:
@Controllerpublic 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