4

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

 4 years ago
source link: https://www.infoq.cn/article/AVCGLK2qtPkk3CdR0czx
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK