【问题标题】:Deploed Spring Boot application on Tomcat create bad URLS在 Tomcat 上部署的 Spring Boot 应用程序创建错误的 URL
【发布时间】:2020-10-23 08:49:12
【问题描述】:

我有 Spring Boot 应用程序&它是移动应用程序的 REST API。所以它在本地工作正常,但是在tomcat远程服务器上部署后,它有问题。 所以,我的应用在tomcat应用管理器中

这是属性文件

server.forward-headers-strategy=framework


spring.freemarker.expose-request-attributes=true
spring.freemarker.suffix= .ftl
# location of the swagger json


spring.data.mongodb.authentication-database=aibolitDB
spring.data.mongodb.username=admin
spring.data.mongodb.password=admin
spring.data.mongodb.database=aibolitDB
spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost

springdoc.swagger-ui.path=/swagger-ui-aibolit.html



spring.servlet.multipart.max-file-size=256MB
spring.servlet.multipart.max-request-size=256MB
spring.servlet.multipart.enabled=true

app.url.base=http://aibolitbackend.unitbeandev.com/

ub.vet.jwtSecret= bezKoderSecretKey
ub.vet.jwtExpirationMs= 86400000

logging.level.org.springframework.web = trace
logging.level.org.apache = trace

什么时候 我尝试发送 api 请求,它给了我一个错误

如您所见,它尝试在 /AibolitBackend/ 路径中查找 这是我的 NGINX 属性

 location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8080/AibolitBackend/;
    #       try_files $uri $uri/ =404;
    }

我忘了设置什么?需要我向 Tomcat 主机添加一些东西吗?而且我不能在 Base / path 上实现它,因为这里会有 3 个应用程序。

【问题讨论】:

    标签: java spring-boot nginx deployment tomcat8


    【解决方案1】:

    您在同一位置有 try_filesproxy_pass 指令的奇怪组合。这没有任何意义。通常要使用 nginx 提供静态文件并将其他请求传递给后端,您应该使用类似

    location /
        # First attempt to serve request as static file, then pass request to the backend
        root <set_correct_root_for_your_static_files_here!>;
        try_files $uri @tomcat;
    }
    location @tomcat {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080;
    }
    

    使用proxy_pass http://127.0.0.1:8080/AibolitBackend/;,您可以在进入后端之前将任何类似/some/path 的请求转换为/AibolitBackend/some/path。我不明白你想用这个 /AibolitBackend/ 前缀实现什么。

    【讨论】:

    • 是的,我想在没有 /AibolitBackend/ 的情况下访问休息。应该是aibolitbackend.unitbeandev.com/public/api***
    • 对 REST API 的请求与其他请求有何不同?任何以/public/api 开头的请求都是 REST 请求?
    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2019-01-17
    • 2021-11-01
    相关资源
    最近更新 更多