java - RESORUCE NOT FOUND ERROR: osweb.servlet.DispatcherServlet : POST "/live/api/auth/login", parameters={} 其中 NGINX 将 live/api 路由到 SpringBoot API
问题描述
我正在尝试使用 NGINX 反向代理服务 SpringBoot API(:8081),如下所示。
location /live/api {
proxy_pass http://localhost:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
此 NGINX 配置有效,但 SpringBoot API 不/live/api
作为其基础。下面是SecurityConfig.java
。
// Set permissions on endpoints
http.authorizeRequests()
// Our public endpoints
.antMatchers("/auth/**").permitAll()
.antMatchers("/public/**").permitAll()
// Our private endpoints
.anyRequest().authenticated();
示例情况:
- 发布“/live/api/auth/login”,参数={}
RESOURCE NOT FOUND ERROR
o.s.web.servlet.DispatcherServlet : POST "/live/api/auth/login", parameters={}
o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped to ResourceHttpRequestHandler [Classpath [META-INF/resources/],
Classpath [resources/], Classpath [static/], Classpath [public/], ServletContext [/]]
o.j.s.OpenEntityManagerInViewInterceptor : Opening JPA EntityManager in OpenEntityManagerInViewInterceptor
o.s.w.s.r.ResourceHttpRequestHandler : Resource not found
o.j.s.OpenEntityManagerInViewInterceptor : Closing JPA EntityManager in OpenEntityManagerInViewInterceptor
o.s.web.servlet.DispatcherServlet : Completed 404 NOT_FOUND
o.s.web.servlet.DispatcherServlet : "ERROR" dispatch for POST "/error", parameters={}
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest)
o.j.s.OpenEntityManagerInViewInterceptor : Opening JPA EntityManager in OpenEntityManagerInViewInterceptor
o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [application/json] and
supported [application/json, application/*+json,
application/json, application/*+json]
o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [{timestamp=Mon Jul 12 16:32:01 UTC 2021, status=404, error=Not Found,
message=, path=/live/api/auth/ (truncated)...]
o.j.s.OpenEntityManagerInViewInterceptor : Closing JPA EntityManager in OpenEntityManagerInViewInterceptor
o.s.web.servlet.DispatcherServlet : Exiting from "ERROR" dispatch, status 404
o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet]
in context with path [] threw exception
解决方案
只需添加server.servlet.contextPath=/live/api
到您的应用程序配置文件中。
推荐阅读
- php - 我如何解决带有键的数组的 FileType Key“类”问题
- python-3.x - 如果数据在使用 Pandas 的列表中匹配,如何删除行
- c# - 服务器返回请求错误,但我的简单帖子看起来正确
- asp.net-mvc - 带有索引的代码中的唯一列不起作用
- java - 用 HoughLinesP 过滤掉相邻的行
- excel - 循环工作表以删除特定范围
- node.js - 您可以通过 twilio-client 检查电话号码是否是经过验证的来电显示吗?
- django - /en/ 字符串索引处的 TypeError 必须是整数
- php - opcache.revalidate_freq 在 opcache.file_cache_only=1 时是否适用?
- jenkins - Gitlab Jenkins Webhook 成功执行但返回 HTTP 403(需要身份验证)