1
arthas2234 2019-12-21 11:26:55 +08:00
nginx 反向代理?
|
2
xuwenping 2019-12-21 11:32:23 +08:00 via Android
不太明白 server.servlet.context-path 为什么不能解决你的问题。或者写个 basecontroller,其他所有的 controller 都继承它,basecontroller 用来实现你的同一路径前缀
|
3
w292614191 2019-12-21 11:32:50 +08:00
@RequestMapping("/api/user/getUser")
@RequestMapping("/api/menu/getMenu") @RequestMapping("/api/menu/delMenu") @RequestMapping("/api/v2/getList") |
4
zwh2333 2019-12-21 11:34:50 +08:00 via iPhone
好像用 Spring Cloud Gateway 可以
|
5
qinxi 2019-12-21 11:37:05 +08:00
server.context-path:
|
6
cedoo22 2019-12-21 11:38:20 +08:00
nginx ?
spring zuul? 拦截器 / 过滤器?? |
7
handsomezai OP 主要是项目的后台管理端 layui 写的使用 nginx 部署。初期是前端后台的接口全部写在同一个 springboot 项目中了,现在想把前端的接口全部抽出来单写一个项目里面加入统计和各种日志以应对 SEM 的各种需求变更,至于后台想把 layui 集成到项目中去,这样后期可以做 IP 白名单进行限定 IP 登录,但是后台中的接口能不能再加个统一的前缀,全部手动改几百个接口都要去改动
|
8
handsomezai OP @arthas2234 nginx 线上在使用,现在要根据 IP 白名单控制后台页面的输出,所以使用 springboot 本身进行 IP 动态管控
|
9
handsomezai OP @xuwenping server.servlet.context-path 是整个项目的路径,因为现在将后台管理页面加入进去(之前分离的单独部署,nginx 反向代理),第二种继承 baseController 对整个项目改动太多
|
10
devld 2019-12-21 11:51:39 +08:00 via Android
实现 WebMvcConfigurer 接口
```java @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.addPathPrefix("/api", c -> c.isAnnotationPresent(ApiController.class)); } ``` |
11
luozic 2019-12-21 11:52:42 +08:00
nginx 可以玩 ip 白名单模式。
|
12
luozic 2019-12-21 11:53:16 +08:00
“现在要根据 IP 白名单控制后台页面的输出“ 这个才是真的需求。
|
13
handsomezai OP @devld 大哥,正解,非常感谢!!!
|
14
handsomezai OP 感谢大家的回答,devld 的更符合我现在的需求,我这边也查到了一个,分享一下,
//自动注入 spring boot 默认的上传配置 @Autowired private MultipartConfigElement multipartConfigElement; @Autowired private DispatcherServlet dispatcherServlet; @Bean public ServletRegistrationBean apiServlet() { ServletRegistrationBean bean = new ServletRegistrationBean(dispatcherServlet); //注入上传配置到自己注册的 ServletRegistrationBean bean.addUrlMappings("/api/*"); bean.setMultipartConfig(multipartConfigElement); bean.setName("apiServlet"); return bean; } 不过还是推荐使用 devld 用户的,实现 WebMvcConfigurer 接口的 configurePathMatch 接口 @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.addPathPrefix("/api", c -> c.isAnnotationPresent(RestController.class) || c.isAnnotationPresent(Controller.class)); } RestController 是接口的,Controller 里面包含的是验证码输出一类的视图 |
15
handsomezai OP @luozic nginx 做 IP 白名单,动态的有点麻烦,不如直接使用项目中拦截控制,存到数据库,使用 redis 做缓存加速,因为这个后台是面向公司内部人员使用的最多 200 员工,三五年内用户变化可能小,所以后台并发性能这块不用特别注重。前端的接口我准备单独提出来,着重性能去做优化
|
16
handsomezai OP @cedoo22 zuul 用不到,公司项目小,没必要整那么多服务^__^
|
17
Vanes 2020-03-02 15:24:03 +08:00
@handsomezai 你这种方式的话,是不是带不带 /api 这个前缀都能访问到对应的接口哦?
|