学习-SpringCloudZuul gateway转发静态资源问题

一、问题描述

使用SpringBoot开发微服务应用时,使用Zuul开发API gateway,进行鉴权和验证,第一次配置路由之后,加载到页面发现没有获取静态资源文件,如下:

zuul.routes.testweb.path=/page/**
zuul.routes.testweb.url=http://localhost:8080/page

二、解决方法

此问题主要针对添加了类或项目映射路径的情况,若只有基本路径,直接配置为地址加端口即可。参照网上搜索到的资源,找到一下方法,仅供参考:

1.对使用如下添加类级别的映射路径的

@RequestMapping("/sys")

则添加静态资源路由,如下:

#页面以及方法的路由
zuul.routes.testweb.path=/page/**
zuul.routes.testweb.url=http://localhost:8080/sys


#静态资源文件的路由
zuul.routes.test-res.path=/static/**
zuul.routes.test-res.url=http://localhost:8080/

因为在这种情况下,静态资源还是相当于直接发布在8080端口,没有和类方法一起使用类映射路径,所以在页面上引用资源需要进行调整,如下(此方法在加载页面时,静态资源是经过第二次映射):

<!-- 不经过网关,直接加载本地资源 -->
<link rel="stylesheet" th:href="@{/css/bootstrap.css}" />

<!-- 经过网关时,加载资源服务上的资源 -->
<link rel="stylesheet" th:href="@{/static/css/bootstrap.css}" />

2.对于使用在配置文件中添加项目路径的如下:

#在properties文件中添加tomcat上下文路径

server.context-path=/sys

#较高版本Springboot使用
server.servlet.context-path=/sys

只需要在网关中添加如下路由:

#页面web方法以及静态资源的路由
zuul.routes.testweb.path=/page/**
zuul.routes.testweb.url=http://localhost:8080/sys

在采用context-path配置时,静态资源和类方法访问路径都会被加上指定的映射路径/sys,所以可以将路由合并,也无需修改页面引用,但注意此时静态是发布在 IP地址:8080/sys 上的。

两种方式本质是一致,需要正常映射转换静态资源的发布路径

参考文章链接:https://blog.csdn.net/qq_29402187/article/details/85013774

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值