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

2020 年 3 月 06 日

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

2020 年 3 月 06 日 09:00 1299

评论

发布
暂无评论
发现更多内容

自主管理——对人性的假设

zhongzhq

自主管理 组织

从0到1搭建大数据平台之数据采集系统

WindyQin

大数据 数据采集

从0到1搭建大数据平台之调度系统

WindyQin

大数据 工作流调度

区块链标准化很重要吗?

CECBC区块链专委会

区块链 区块链规范

企业玩转DevOps转型:由弱到强,只需7步

华为云开发者社区

DevOps 软件工程 组织转型 软件开发 华为云

3行!仅3行代码就能抓取B站(弹幕、评论、用户)数据

华为云开发者社区

数据 B站 代码 词云图 API

Flink x Zeppelin ,Hive Streaming 实战解析

Apache Flink

flink hive Zeppelin

LG的“卷轴”柔性屏,技术可期,前景未卜?

脑极体

简述 JVM 垃圾回收原理

一叶知秋

分布式环境下,我想要一致性

架构师修行之路

分布式 分布式系统 架构师 CAP

两万字长文50+张趣图带你领悟网络编程的内功心法

arthinking

网络协议 TCP/IP

如何从0到1搭建大数据平台

WindyQin

大数据 中台

100% 展示 MySQL 语句执行的神器-Optimizer Trace

程序员历小冰

MySQL

LeetCode题解:70. 爬楼梯,DP遍历,变量缓存结果,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

ElasticSearch笔记

石印掌纹

JVM系列之:JIT中的Virtual Call接口

程序那些事

Java JVM JIT

击破技术枷锁与认知迷雾 百度四大杀手锏开启新基建AI风暴

脑极体

BIGO 实时计算平台建设实践

Apache Flink

flink BIGO

ARTS-WEEK9

一周思进

设计模式

张明森

计算机网络基础(十二)---网络层-外部网关路由协议

书旅

计算机网络 网络 协议栈 BGP

聚焦智慧城市生活服务,百度携手贝塔智能按下“加速键”

百度大脑

人工智能 人脸识别 AR 百度大脑 智慧城市

阿里巴巴《Java 开发手册》—嵩山版发布,附下载链接!

程序员生活志

Java 阿里巴巴 学习资源 手册

全国首个市场监管区块链电子取证平台正式上线

CECBC区块链专委会

区块链

手把手教你实现自定义Spring Boot的 Starter

java金融

Java spring 程序员 Spring Boot starte

week 9 作业

Geek_2e7dd7

你不是说你会Aop吗?

Java旅途

week 9 学习总结

Geek_2e7dd7

redis-port支持前缀迁移

心平气和

redis redis-port

什么样的服务器适合做APP?

德胜网络-阳

MySQL 的 crash-safe 原理解析

vivo互联网技术

MySQL 数据库 开源项目

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