zoukankan      html  css  js  c++  java
  • Spring Boot 应用中server.context-path的作用

    定义: server.context-path= # Context path of the application. 应用的上下文路径,也可以称为项目路径,是构成url地址的一部分。

    在每个module的application.properties文件都可以配置server.context-path这个属性。开始使用spring boot的时候没有注意这个属性,其实默认可以不配置,直接在controller层通过@RequestMapping来设定url的地址路径。

    @RestController
    @RequestMapping("/mqcp")
    public class MQCPContorller {
    @Autowired
    MQCPServiceImpl mqcpService;

    @RequestMapping("/convert")
    public String convert(){
    mqcpService.convert();
    return "ok";
    }
    }

    如果server.context-path没有配,请求的url地址就是 localhost : port/mqcp/convert
    如果server.context-path = “/market/task”, 请求的url地址就是 localhost : port/market/task/mqcp/convert
    在 task这个模块下的所有web层的url地址都需要添加server.context-path。

    server.context-path 在ngnix分发中的作用

    ngnix 分发的时候 server.context-path 起到了很重要的作用,并且如果server.context-path 值没有写规范也会导致挖出一个巨大的坑。

    下面是ngnix的部分配置文件

    upstream task{
    server 100.100.88.152:8097;
    check interval=30000 rise=2 fall=3 timeout=1000 type=http;
    check_http_send "GET /market/task/turnTask HTTP/1.0 ";
    check_http_expect_alive http_2xx http_3xx;
    }
    server {
    location /market/task/ {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://task;
    }
    }

    实现的功能是所有的请求中如果url中包含/market/task/的请求,都被分发到server 100.100.88.152:8097,这个ip和端口的服务器上。
    很明显,如果task模块配置了server.context-path= /market/task 那么task模块下的所有web接口url地址都必须加上 /market/task, 那么在task模块下的web层所有接口都可以分发到server 100.100.88.152:8097上,不用考虑新增的Controller类上的路径和接口上定义的路径。

    反之,如果没有配置server.context-path,或者server.context-path配置的没有区别性,比方说配置为 /market ,无法和其他模块区分开来,那么ngnix就没有办法分发出去。 这样模块下web层每次新增一个Controller类,为了能够让ngnix正常分发,不报404错误,需要在ngnix上对类的url地址进行配置,这是一件很麻烦的事情。所以server.context-path的规范配置很关键。

  • 相关阅读:
    (转)STMFD和LDMFD指令个人理解分析
    [原创] linux下的串口调试工具
    详解Makefile 函数的语法与使用 (转)
    sed命令详解(转)
    [转]QT4解决中文乱码(tr的使用 | QTextCodec)
    新型的按键扫描程序,仅三行程序(转)
    VS2010旗舰版不能安装Silverlight4_Tools的解决方案
    ASP.NET MVC3+EF4+Oracle入门实例(六)
    一个ASP.NET文件下载类
    项目管理实践【四】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
  • 原文地址:https://www.cnblogs.com/mgzy/p/12753203.html
Copyright © 2011-2022 走看看