当前位置: 首页 > 知识库问答 >
问题:

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

葛兴发
2023-03-14

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

   browser
      |
      |
    gateway   (:8080)
     /   \
    /     \
   /       \
resource   UI (:8090)
zuul:
  routes:
    ui:
      path: /ui/**
      serviceId: myproject.service.ui
      stripPrefix: false
      sensitiveHeaders:

提前道谢!

共有1个答案

胡致远
2023-03-14

我终于让我的代码工作了!感谢@pan在根路径问题上提到Zuul路由,感谢@rzvrazvan揭示Zuul路由的工作原理。

我刚刚将控制器添加到Zuul路由网关微服务中,其中有一个endpoint可以从根http://localhost:8080/重定向到http://localhost:8080/ui/:

@Controller
public class GateController {    
    @GetMapping(value = "/")
    public String redirect() {
        return "forward:/ui/";
    }    
}

用于从端口8080上的网关微服务重定向到UI微服务的Zuul属性,该微服务在端口8090上作为http://localhost:8080/UI/作为单独的Spring Boot应用程序实现,作为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微服务的controller,它返回viewindex.html:

@Controller
public class UiController {
    @GetMapping(value = "/")
    public String index() {
        return "index.html";
    }
}

实际上,我在这样的架构中呈现静态内容时遇到了另一个问题,但这与我的前端配置有关,我使用Vue.js框架开发该前端。我将在这里用几句话来描述它,以防它可能对某人有帮助。

myproject.service.ui
    └───src/main/resources
        └───public
            |───static
            |    ├───css
            |    └───js
            └───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 Boot Primefaces嵌入式Tomcat项目,到目前为止我很满意,特别是识别Spring Beans和服务(SpringBeanFacesELResolver)的facelet。现在我想配置应用程序,以便基本URL将转换为人脸基本URL。例如:要重定向到 http://localhost:8080/index.xhtml http://localhost:8080

  • 有人让我创建一个脚本,将移动用户直接重定向到插入电话号码的电话应用程序。而不是查看网页。 不知何故,我的脚本只适用于点击事件,而不适用于页面加载事件。 问候

  • 我有多个Java Spring Boot服务(大约20个),使用Amazon SDK for S3、SQS、DynamoDB等。 目前,要使用Amazon Web服务,我只需要指定我的AWS密钥&秘密。 然而,我想要设置离线开发环境,所以我开始对接我的服务,并建立一个单一的多Docker容器,我的所有服务都对接了,应该使用localstack而不是远程AWS服务,以允许完成离线开发。 Amazon

  • 我开始使用身份服务器4(在ASP. NET Core下)使用隐式流来保护Angular 2前端(到Web API服务)。 使用oidc-Client JS库,我可以成功地从示例的默认页面重定向到我的登录页面,让用户进行身份验证,然后重定向(通过 /connect/authorize)返回Angular站点的回调。 如果用户直接浏览到我的身份验证登录页面(而不是Angular主页),我就可以进行身份

  • 奇怪的问题。我使用FullCalendar向服务器上的endpoint发起ajax请求。终点是: 请注意,它是显式的HTTPS。但是,当我发起一个请求时(即当Fullcalendar发起一个请求时),我会得到一个301和一个到非HTTPSendpoint的重定向: 因为页面是通过HTTPS加载的,所以失败。 endpoint工作正常--当我将它加载到浏览器中时,我会得到预期的json输出(通过ht

  • 问题内容: 我想使用Java获取本地计算机的默认网关。我知道如何通过执行dos或shell命令来获取它,但是还有其他获取方法吗?还需要获取主要和辅助dns ip。 问题答案: 没有简单的方法可以做到这一点。您必须调用本地系统命令并解析输出,或者读取配置文件或注册表。我知道没有一种独立于平台的方式可以实现此目的- 如果要在所有平台上运行,则必须为linux,mac和Windows进行编码。 请参阅如