• 重写
    • 场景说明

    重写

    场景说明

    • 假设我们的服务升级后,服务路径发生了变化(/service => /v1/service)
    • 同时我们有一些已经发布出去的APP,如果修改请求路径,需要用户下载安装新版本
    • 我们希望老版本的APP也可以直接请求新的服务,而不用同时维护两套服务

    在样例配置上添加一些新的配置,就可以实现上述功能

    • 首先,bfe启用mod_rewrite模块(bfe.conf)
    1. Modules = mod_rewrite #启用mod_rewrite
    • 配置rewrite模块

      • 配置rewrite规则文件的存储路径(mod_rewrite/mod_rewrite.conf)
      1. [basic]
      2. DataPath = mod_rewrite/rewrite.data
      • 配置rewrite规则

        • 路径前缀为/service的所有请求均会添加/v1前缀后转发给后端服务
        1. {
        2. "Version": "init version",
        3. "Config": {
        4. "example_product": [{
        5. "Cond": "req_path_prefix_in(\"/service\", false)",
        6. "Actions": [{
        7. "Cmd": "PATH_PREFIX_ADD",
        8. "Params": [
        9. "/v1/"
        10. ]
        11. }],
        12. "Last": true
        13. }]
        14. }
        15. }
    • 现在,用curl验证下是否配置成功

    curl -H “host: example.org” “http://127.1:8080/service“, 对应后端服务集群cluster_demo_dynamic收到的请求PATH为”v1/service”