恩 刚刚确实是没有说清楚
具体的原始需求类似是这样的
在nginx中配置相应的https server虚拟主机,统一接收https请求,并对其中uri进行解密得到真实访问的host,然后根
据该host proxy_pass到其他的http server虚拟主机中,目前,这种方法因为proxy_pass会有双份的fd开销。
解决的方法:
1. 用lua实现。目前http的virtual server已经大量存在,如果用lua实现的话,必须将virtual server的nginx配
置转化为lua,这样对于现有的生产环境太麻烦(因为这样的server有30+,并且各个server的配置不相同)
2. 修改nginx本身,让其内部转发。前面的代理https server存在的意义就是支持https并解出真实host,然后
根据host选择相应的http server。 这个方案还在研究中。。。
On Wednesday, September 28, 2016 at 9:46:07 AM UTC+8, doujiang wrote:
Hello
在 2016年9月28日 上午9:18,Paul Von
<paul...@gmail.com>写道:
呃,问下有实际的实现样例么 最近研究了下 还是没有什么头绪 谢谢
请参考 rewrite_by_lua 的实现
我不明白你为什么要搞这些个 virtual server,其实你并没有把你的原始需求说出去
建议你从你的原始需求考虑
感觉直接用 rewrite_by_lua 或者 content_by_lua 就可以实现,没必要绕这么一圈
用 OpenResty 就应该把更多的逻辑放到 Lua 里,没必要用那么多 nginx 的配置了
我的问题场景是:一个virtual server做代理(端口为2000),将请求url中的真实host在NGX_HTTP_POST_READ_PHASE阶
段解密出来,然后再在NGX_HTTP_SERVER_REWRITE_PHASE阶段选择新的virtual server(端口为3001或3002或3xxx)处
理接下来的请求。
On Wednesday, September 28, 2016 at 8:10:47 AM UTC+8, doujiang wrote:Hello
在 2016年9月27日 下午9:36,Paul Von <paul...@gmail.com>写道:
问下,是否可以在server rewrite阶段写个handler模块,改变当前请求的virtual server
理论上来说应该可以
从而避免使用proxy_pass?
只是,我感觉你这个应该有其他方式解决吧
--