求助:关于nginx 转发 双向SSL认证请求 的问题

malf 发布于 2014/02/21 16:53
阅读 1K+
收藏 0

大家好,对Web 部署方面不太了解,请教些问题: 

   
我想在互联网上对外提供Web服务,现在申请有一个公网固定IP,想通过代理的方式,接受浏览器发过来的请求(基于虚拟域名和默认80端口),通过nginx代理服务器转发到内网真正提供网站内容的Tomcat Web服务器上。

   
整体网站是由几个独立的子网站构成,因此tomcat服务会是部署在多个服务器上的多个tomcat实例,由于数据的安全性,其中还有配置了双向SSL认证的Tomcat实例。考虑大致的部署方式如下图所示:

    

上图中 nginx代理服务主要是用来做反向代理以及负载均衡的,虽然 nginx也可以配置双向 SSL认证,但对于 SSL的认证我是考虑下沉到各个配置 SSL访问的 tomcat实例来完成,这样一是提高了并发的效率,二是架构比较平衡,不至于 SSL集中在 nginx这里认证, nginx服务器宕机挂了后而不能接受转发请求了。  

现在有几个问题:
1.  
配置了双向 SSL认证的 Tomcat实例和 Nginx代理在一台机器上时,通过 nginx转发可以访问 Httpstomcat服务,但是分开部署在不同的机器后, nginx转发后总是提示 “SSL连接出错 ,不知道是哪个细节出问题了;
nginx代理转发的原理是按规则解析浏览器请求,然后模拟请求转发给真正的服务器, SSL的客户端发出的请求是密文以及客户端证书,不知道是不是 nginx没有证书无法解析请求的原因?不知道是否有具体配置的技巧来透传给相应的 tomcat服务?)

 2.  
如果多个用户以同一个域名请求访问 SSL服务,即都以 www.aaa.com访问,考虑以后可能特定的用户会提供单独的 tomcat实例服务,这个 nginx可以配置虚拟子目录的 location,但是问题有 2个:

A.     
用户名和虚拟子目录的对应关系,是需要开发 nginx的源代码重新编译实现吗?还是 nginx有相应的配置,不知道 nginx是否能配置数据库,能做到已用户名来查询虚拟子目录?

B.     
请求访问 SSL服务时, SSL的客户端发出的请求是密文以及客户端证书,这个如何获取用户名呢

3. 
负载均衡时,后台的多个 tomcat实例对应的网站内容的数据同步问题,有没有什么好的方案?

非常感谢大家的帮助!!!

加载中
0
m
malf
不好意思,使用的是nginx的windows版本,测试环境是windows。
返回顶部
顶部