Проблемы с перенаправлением nginx в веб-приложение весенней загрузки tomcat

Я разработал небольшой сайт с весенней загрузкой и тимелистом. Он использует бутстрап и jquery через веб-банки. Работает локально, все хорошо, а файлы js и css доставляются правильно.

Когда я пытаюсь развернуть его на своем сервере, все становится ужасно. У меня есть работающий по умолчанию tomcat8, который проксируется через nginx.

Содержимое сайта HTML-файла доставлено правильно, однако он не может найти веб-файлы.

Мои application.properties выглядят как

/example

Веб-приложение развернуто на Tomcat как / пример.

Путь к сценарию в index.html:

<script src="https://cdn.jsdelivr.net/jquery/3.1.1/jquery.min.js" th:src="@{/webjars/jquery/3.1.1/jquery.min.js}"></script>
<script src="https://cdn.jsdelivr.net/bootstrap/3.3.7/js/bootstrap.min.js" th:src="@{/webjars/bootstrap/3.3.7/js/bootstrap.min.js}"></script>

Хотя я не люблю использовать CDN, потому что знаю о них мало, но все равно.

Сообщение об ошибке в chrome devtools:

404 GET https://example.de/example/webjars/bootstrap/3.3.7/css/bootstrap.min.css
404 GET https://example.de/example/webjars/jquery/3.1.1/jquery.min.js 
404 GET https://example.de/example/webjars/bootstrap/3.3.7/js/bootstrap.min.js 

Конфигурация nginx:

server {
        listen 80;

        server_name example.de www.example.de;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl;

        server_name     example.de www.example.de;
        root            /var/lib/tomcat8/webapps/example;
        ...

        location / {
                proxy_pass http://127.0.0.1:8080/example/;
        }
}

Я тоже пробовал что то типа

rewrite ^/collectd(/.*)$ $1 break;

но это не помогло.

Мой пом

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>de.example</groupId>
<artifactId>example-website</artifactId>
<version>1.0</version>
<packaging>war</packaging>

<name>example-website</name>
<description>example website</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <tomcat.version>8.0.32</tomcat.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-juli</artifactId>
        <version>${tomcat.version}</version>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>3.3.7</version>
    </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.1.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Может кто-нибудь сказать мне, что я должен добавить к конфигурации nginx, который он на самом деле перенаправляет в папку webapp?

Большое спасибо за ваше время и помощь.

2 ответа

Решение

Проблема может быть исправлена ​​добавлением отсутствующей директивы перезаписи в конфигурацию сайта (местоположения) nginx.

Недостающая строка была:

rewrite ^/example(.*)$ $1 last;

Пожалуйста, добавьте Resource Handler в вашу конфигурацию следующим образом:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    if (!registry.hasMappingForPattern("/webjars/**")) {
        registry.addResourceHandler("/webjars/**").addResourceLocations(
                "classpath:/META-INF/resources/webjars/");
    }
    if (!registry.hasMappingForPattern("/**")) {
        registry.addResourceHandler("/**").addResourceLocations(
                RESOURCE_LOCATIONS);
    }
}
Другие вопросы по тегам