我公司最近讨论的一个技术方案中需要nginx对tls流量中server name进行修改,因为这个需求我开始接触openresty,我看了看lua-nginx-model中的接口,发现没有接口可以让nginx修改tls流量中server name的值,我觉得openresty开源版中应该没有这个功能,请问openresty企业版中有这个功能?
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
---
您收到此邮件是因为您订阅了Google网上论坛上的“openresty”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到openresty+...@googlegroups.com。
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/openresty/3c3941c7-2c3d-42b0-9d42-fb5091b894c5n%40googlegroups.com。
具体场景如下:
我们这里有一个client和server程序,client与server之间执行一个计算任务,它们俩之间通信使用TLS协议,client和server程序都是商业软件,供应商不开放源码。随着业务的扩展,我们最近接到了一个大项目,这个项目中一个client会和多个server并行进行数据传输,相当于之前是client与server之间仅仅跑一个计算任务,现在因为业务的扩张它们之间要同时跑多个计算任务了。
对于这个变化我们咨询了供应商,供应商说一个client进程和一个server进程之间可以并行跑多个任务,但是每个计算任务中server要监听不同的通信端口。得到这个消息之后我们很高兴,我们觉得这个大项目基本没有什么风险了,然后开始和甲方进行技术层面的沟通,给他们讲解原理层面的一些内容,然后他们反馈了一个严重问题。
甲方和它的合作伙伴是高信息安全型的企业,项目交付的时候client和server程序分别运行在甲方和其合作伙伴的数据中心中,这个时候通信端口带来了一些麻烦。这两个数据中心在异地,都是自建机房安装有硬件防火墙。当client部署在甲方数据中心、server部署在甲方合作伙伴的数据中心时,如果想并行执行多个任务,那么server需要监听多个通信端口。虽然server程序可以做到,但是甲方的合作伙伴数据中心的防火墙要开多个通信端口,这点甲方的合作伙伴是不可接受的。
对于这个问题我们内部进行了讨论,想到一个方案,内容如下:
0. 情景说明
0.1 client程序运行在甲方数据中心中,server程序运行在甲方合作伙伴数据中心中;
0.2 client程序与server程序之间有两个计算任务并行执行,这意味着甲方合作伙伴运行的server程序会监听两个通信端口,假设一个是10030,另外一个是10040;
0.3 甲方合作伙伴数据中心只为server程序开放一个防火墙端口,假设此端口为37821;
1. 在甲方数据中心中:
1.1 在client程序和数据中心防火墙之间部署一个nginx,简称nginix1;
1.2 client程序执行第一个任务时与nginx1的50060端口建立tls通信,执行第二个任务时与nginx1的50061端口建立tls通信;
1.3 nginx1将两个任务的tls流量转发至server程序,转发时将第一个任务tls流量中的server name修改成task_1,将第二个任务tls流量中的server name修改成task_2;
1.4 nginx1将两个任务的tls流量server name字段修改完成之后,将流量发送至甲方合作伙伴数据中心的37912端口上;
2. 在甲方合作伙伴的数据中心中:
2.1 在防火墙与server程序之间部署一个nginx,监听37912端口,简称nginx2;
2.2 nginx2收到tls流量之后,根据流量中server name的值确定将数据转发至server程序监听的一个端口中:将server name为task_1的tls流量转发至server程序监听的10030端口;将server name为task_2的tls流量转发至server监听的10040端口;
上述方案在不改动client、server程序的前提下,解决了甲方技术同事提出的通信端口问题,在我们的调研过程中发现,甲方合作伙伴数据中心中运行的nginx通过server name字段将tls流量转发至其内部server程序监听的不同的通信端口是可以实现的,这是nginx的一个典型用法;但是让nginx修改tls流量中server name字段的值似乎很难实现。
您收到此邮件是因为您订阅了Google网上论坛上“openresty”群组中的主题。
要退订此主题,请访问https://groups.google.com/d/topic/openresty/szPI4etwLYY/unsubscribe。
要退订此群组及其所有主题,请发送电子邮件到openresty+...@googlegroups.com。
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/openresty/046595de-62ee-4353-892c-0ef4b8b521cen%40googlegroups.com。