首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NGINX Unit增加反向代理和地址路由功能

NGINX官宣开源其Web及应用服务器NGINX Unit 1.13和1.14版。新版本提供反向代理,并支持基于客户连接的IP地址和请求目标的地址匹配路由。

NGINX Unit支持同时运行Go、Perl、PHP、Python、Node.JS、Java和Ruby等多语言Web应用。服务器不依赖于静态配置文件,而是允许通过REST API使用JSON进行配置。配置保存在内存中,无需重启即可生效。

NGINX Unit的最新发布版支持反向代理。通过在Web服务器前部署反向代理,可将客户请求反向转发给服务器。新的proxy选项已加入到通用路由框架中,支持代理请求特定地址。当前,代理地址在配置上支持IPv4、IPv6和Unix Socket地址。

举例说明,下例配置的routes 对象,一旦接收的请求匹配设定条件,就将请求代理给127.0.0.1:8000:

{
  "routes": [
    {
      "match": {
        "host": "v1.example.com"
      },

      "action": {
        "proxy": "http://127.0.0.1:8000"
      }
    }
  ]
}

其中,proxy选项确定了流量将如何路由,它合并了前期添加的pass和share选项功能。pass选项是1.8.0版中添加的,通过将请求路由给应用或路由器实现内部路由。在请求需由单独应用处理的情况下,内部路由非常有用。例如,错误的请求需传递到单独的应用做处理,以最大程度上降低对主应用的影响。

而share选项是在1.11.0版中添加的,支持分享静态文件。这包括支持URI中的编码符号、部分内置MiME类型和额外添加的类型。

在1.14版中,通过新定义的匹配选项source和destination支持地址匹配,实现基于地址的路由(Address-based routing)。其中,选项source支持基于连接客户端的IP地址做匹配,选项destination支持基于请求的目标地址做匹配。

新版本的路由引擎支持对基于IPv4和IPv6的模式和模式组进行地址值匹配。模式可使用端口号、确切地址和CIDR符号组成的通配符。下面给出的示例中,对于源地址匹配给定CIDR的请求,就可访问共享路径所设定的资源:

{
  "routes": [
    {
      "match": {
        "source": [
          "10.0.0.0/8", 
          "10.0.0.0/7:1000",
          "10.0.0.0/32:8080-8090"
        ]
      },

      "action": {
        "share": "/www/data/static/"
      }
    }
  ]
}

假定上例定义的共享路径/www/data/static/具有如下结构:

/www/data/static/
├── stylesheet.css
├── html
│  └──index.html
└── js files
   └──page.js

那么对于请求curl 10.0.0.168:1000/html/index.html,Nginx代理将返回index.html文件。

按F5 Networks高级科技作者Artem Konev说法,NGINX Unit未来版本将考虑的特性包括:轮询负载均衡、进一步增加应用隔离性的rootfs、处理静态断言的增强逻辑、内存性能改进等。

NGINX Unit可在GitHub下载,并可通过NGINX Plus获取支持。新版本的更多细节,请访问NGINX Unit变更记录

原文链接:

NGINX Unit Adds Support for Reverse Proxying and Address-Based Routing

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/AVCGLK2qtPkk3CdR0czx
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券