BeetleX-WebApi服务IP限制和URL重写

在新版本的BeetleX.FastHttpApi中集成了IP访问策略和URL重写两个功能,通过IP访问策略可以制定服务针对不同IP的访问限制控制;而URL重写则可以制定更好的URL访问方式。以下介绍这两的功能的使用:

IP策略

组件在 1.6.7 开始集成了IP限制功能,可以通过配置白名单或黑名单的方式来配置可访问的IP。该功能默认情况是禁用,如果有需要则打开此功能来对访问进行限制(该功能暂只对IPv4有效,IPv6则暂时无效)。

配置

可以通过 HttpApiServer.IPv4Tables.Type 配置IP访问限制,默认值是 None 不开启,配置 Black 开启默名单限制,所有在黑名单中的IP不能访问服务;配置 White 开启白名单,所有在白名单中的IP才能访问服务。可以通过以下方法来添加IP

  • AddWhite 方法添加白名单IP

HttpApiServer.IPv4Tables.AddWhite("192.168.2.1/24","192.168.1.18");
  • AddBlack 方法添加默名单IP

HttpApiServer.IPv4Tables.AddBlack("192.168.2.1/24","192.168.1.18");

配置文件

可以通过文件来配置,在目录下编辑 iptables.json (如果文件不存在自行添加)

{
  "Type": "White",
  "WhiteList": [ "192.168.2.1/24", "192.168.2.18" ],
  "BlackList": [ "192.168.2.1/24" ]
}

Url重写

通过Url重写可以提高Url访问友好性同时不需要调整原有服务的Url访问地址,组件在 1.6.9 针对Url重写进行的优化调整,以支持更灵活的重写功能。

配置

可以通过 HttpApiServer.UrlRewrite.Add 方法来添加Url重写规则.

server.UrlRewrite.Add("/cate/{0}.html", "/index.html");

以上重写是把 /cate/ 下面的所有html重写到 index.html .

配置文件

如果不想通过写代码来完成,可以配置目录下的 rewrite.json 文件(不存在则自行添加)

[
  {
    "Url": "/cate/{0}.html",
    "Rewrite": "/index.html"
  }
]

详细描述

组件对Url重写的依据是 BaseUrl 基础访问路径进行匹配,匹配方式不匹分大小写。通过 {name} 来描述一个Url的可变部分, name 是一个变量名,这个变量可以在重写Url部分使用,一个Url可以有多个变量描述.这些重写的变量都会被写入到HttpContext的请求数据中,更方便绑定到控制器参数上.

  • 示例一

{
            "Url": "/api/customers/{count}",
            "Rewrite": "/customers/{count}"
        }
  • 示例二

{
            "Url": "/api/{user}/{id}",
            "Rewrite": "/api/{user}?id={id}"
        }
  • 官方blog

server.UrlRewrite.Add("/cate/{0}.html", "/index.html", "html")
                .Add("/search/{0}.html", "/index.html", "html")
                 .Add("/tag/{0}.html", "/index.html", "html")
                  .Add("/blog/{0}.html", "/blog.html", "html")
                  .Add("/photos/{0}.html", "/photos.html", "html");

以上是 http://ikende.com/blog/ 的一个重写规则,把分类,标签和查询都路由到 index.html 页面处理了。

关注公众号

https://github.com/IKende/

高性能的服务通讯框架  Beetlex(http,rpc,gateway的详细实现

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章