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