一尘不染

反向代理后面的Thymeleaf模板(在Spring Boot应用程序中)无法正确形成url

tomcat

当在逆向代理(在我的情况下为nginx)后面的服务器上使用Thymeleaf时,让Thymeleaf正确地形成相对URL时遇到了一些麻烦。

假设我在nginx中具有以下位置:

location /app {
    proxy_pass http://10.0.0.0:8080;
}

我有以下Thymeleaf 3页(index.html):

<html xmlns:th="http://www.thymeleaf.org">

<head>
    <link rel="stylesheet" th:href="@{/css/some.css}" />
</head>
<body>
    Hello world!
</body>
</html>

所使用的服务器是嵌入式Tomcat服务器(Spring引导),在context上运行/

当我向发送请求时http://example.com/app,我得到index.html页面作为响应。但是,无法检索css,因为在Thymleaf模板中构造URL时,它将使用tomcat服务器的上下文路径,即/index.html外观中的构造网址如下:

http://example.com/css/some.css

这显然导致未找到404。URL的格式如下:

http://example.com/app/css/some.css

我需要配置什么以使Thymeleaf将URL形成为http://example.com/app/css/some.css?我不希望在任何地方为某些配置文件或类似内容对基本URL进行硬编码。我想我需要向nginx配置中添加一些内容,但是我不确定到底是什么。


阅读 608

收藏
2020-06-16

共1个答案

一尘不染

最终使Tomcat服务器的上下文与所需的Nginx位置匹配。根据以上示例,上下文将设置为“ / app”。

编辑:我在设置应用程序上下文属性application.yml

server:
  servlet:
    contextPath: /app
2020-06-16