NGINX https://www.infoq.com/nginx-server/ 官宣开源其 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 选项已加入到 通用路由框架 https://unit.nginx.org/configuration/#route-object 中, 支持代理请求特定地址. 当前, 代理地址在配置上支持 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 https://www.linkedin.com/in/artem-konev-a29a1a11/ 说法, NGINX Unit 未来版本将考虑的特性包括: 轮询负载均衡 , 进一步增加应用隔离性的 https://wiki.debian.org/rootfs , 处理静态断言的增强逻辑, 内存性能改进等.
NGINX Unit 可在 GitHub https://github.com/nginx/unit/ 下载, 并可通过 NGINX Plus https://www.nginx.com/free-trial-request/ 获取支持. 新版本的更多细节, 请访问 NGINX Unit 变更记录 https://unit.nginx.org/CHANGES.txt .
来源: http://www.tuicool.com/articles/QZBrm2J