Gateway微服务路由使微服务静态资源加载失败

Gateway微服务路由使微服务静态资源加载失败

1.Gateway

1.1 Gateway介绍

  • Gateway就是网关微服务,为我们的各个微服务集群提供一个统一的入口,根据路由匹配进行断言,进行对应微服务的访问

2.Gateway 成功之前和之后

2.1 静态资源失败场景重现

  • 远程微服务页面上引入的静态资源路径,/css/index.css
<!-- 引入外部 样式文件 -->
<link rel="stylesheet" type="text/css" href="../static/css/index.css" th:href="@{/css/index.css}">

在这里插入图片描述

  • 远程微服务放行静态资源,修改配置文件
spring:
  application:
    name: ProductPageDemo
  # 放行静态资源
  resources:
    static-locations: classpath:/static/
  • Gateway网关配置文件
server:
  port: 80
spring:
  application:
    name: GatewayDemo
  cloud:
    gateway:
      # 配置路由
      routes:
        - id: ProductPageDemo
          uri: http://ProductPageDemo:9100
          predicates:
            # 断言,以 /page/ 开头进行匹配
            - Path=/page/**
          filters:
            # 过滤器,会去除第一级路径然后进行路由
            - StripPrefix=1

2.2 修改成功,成功加载

  • 因为我的路由匹配需要除去第一级匹配路径,所以我们需要在 对应微服务引入静态资源的时候修改静态资源路径,/page/css/index.css
<!-- 引入外部 样式文件 -->
<link rel="stylesheet" type="text/css" href="../static/css/index.css" th:href="@{/page/css/index.css}">

2.3 如果没有去除第一级路径,大家可以如下配置

server:
  port: 80
spring:
  application:
    name: GatewayDemo
  cloud:
    gateway:
      # 配置路由
      routes:
        - id: ProductPageDemo
          uri: http://ProductPageDemo:9100
          predicates:
            # 断言,以 /page/ 开头进行匹配
            - Path=/page/**,/css/** # 放行静态资源路径
### 微服务架构最佳实践 #### 设计原则 微服务架构的设计应遵循一系列核心原则来确保系统的可扩展性和灵活性。每个服务应该围绕业务能力构建,保持较小的服务规模有助于提高开发效率并简化部署流程[^1]。 #### 通信机制 采用轻量级协议如HTTP/REST或gRPC作为服务间通讯的标准接口形式。对于内部调用可以考虑使用更高效的二进制序列化格式比如Protocol Buffers或者Avro。为了增强解耦合度和服务自治性,推荐异步消息传递模式,例如通过事件驱动的方式处理跨服务的数据交换。 #### 数据管理 每一个独立运行的微服务应当拥有自己私有的数据库实例,避免共享持久层资源造成紧耦合问题。这不仅有利于团队分工协作同时也便于针对不同类型的存储需求选用最合适的技术栈。 #### API网关 设置统一入口即API Gateway用于接收外部请求并将它们路由到相应后端服务上执行具体操作。这样的设计能够有效隐藏内部复杂结构对外界的影响,在安全控制方面也起到积极作用。 #### 自动化运维工具链 利用容器编排平台Kubernetes配合CI/CD流水线实现持续集成与交付过程自动化。借助Prometheus、Grafana等监控告警组件实时跟踪应用健康状况及时响应异常情况发生。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-microservice-deployment spec: replicas: 3 selector: matchLabels: app: my-microservice template: metadata: labels: app: my-microservice spec: containers: - name: my-container image: my-dockerhub-user/my-image:latest ports: - containerPort: 8080 ``` #### 安全策略 实施严格的认证授权措施保障各个层次的安全防护;定期审查依赖库版本防止已知漏洞被恶意利用;敏感数据传输过程中务必启用TLS加密通道保护信息安全。 #### 性能优化建议 除了上述提到的基础建设外还需关注性能层面的因素。例如减少DNS查询次数、压缩静态文件大小以及合理配置缓存策略均能在不同程度改善用户体验的同时降低服务器负载压力[^2]。 #### 渐进式增强理念的应用 即使是在高度动态变化环境下也要坚持渐进式增强的原则——确保网页基础功能正常运作的前提下再逐步引入高级特性提升交互效果而不至于因为JavaScript加载失败影响整体可用性[^3]。 #### 静态资源托管方案的选择 考虑到Cookie对代理缓存可能产生的负面影响,最好将静态资源放置于无Cookie域下进行分发。另外关于顶级域名vs子域名的选择需综合考量Cookies的作用范围以免误设导致不必要的性能损耗[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值