nginx反向SSL代理与多个子域名

我试图find一个高级configuration的例子,为我目前的情况。 我们为多个内部IIS服务器上的多个子域拥有通配符SSL证书。

site1.example.com (XXX194) -> IISServer01:8081 site2.example.com (XXX194) -> IISServer01:8082 site3.example.com (XXX194) -> IISServer02:8083 

我期待通过一个服务器条目来处理传入的SSLstream量,然后将特定的域传递给内部IIS应用程序。 看来我有两个select:

  1. 编码每个子域的位置部分(从我发现的例子看起来很乱)

  2. 将未encryption的stream量转发回为每个子域名主机名configuration不同服务器条目的nginx服务器。 (至less这似乎是一个选项)。

我的最终目标是巩固我们的大部分SSLstream量以通过nginx,所以我们可以使用HAProxy来负载均衡服务器。

如果我正确设置了proxy_set_header条目,是否会在nginx中使用#2方法?

我在我的最终configuration文件(使用方法#2)中设想了一些东西:

 server { listen YYY174:443; #Internally routed IP address server_name *.example.com; proxy_pass http://YYY174:8081; } server { listen YYY174:8081; server_name site1.example.com; -- NORMAL CONFIG ENTRIES -- proxy_pass http://IISServer01:8081; } server { listen YYY174:8081; server_name site2.example.com; -- NORMAL CONFIG ENTRIES -- proxy_pass http://IISServer01:8082; } server { listen YYY174:8081; server_name site3.example.com; -- NORMAL CONFIG ENTRIES -- proxy_pass http://IISServer02:8083; } 

这似乎是一种方式,但我不确定这是否是最好的方法。 我错过了一个更简单的方法吗?

我会做这样的事情(用nginx 1.4.2testing,似乎工作):

 server { listen 127.0.0.1:443 ssl; server_name site1.example.com; include common.conf; location / { proxy_pass http://127.0.0.2:8081; } } server { listen 127.0.0.1:443 ssl; server_name site2.example.com; include common.conf; location / { proxy_pass http://127.0.0.2:8082; } } server { listen 127.0.0.1:443 ssl; server_name site3.example.com; include common.conf; location / { proxy_pass http://127.0.0.3:8083; } } 

至less在common.conf

 ssl on; ssl_certificate /path/to/cert; ssl_certificate_key /path/to/key; 

相信与否,你可以这样做:

 ssl_session_cache shared:SSL:2m; ssl_session_timeout 5m; server { listen YYY174:443 default_server ssl; server_name _; ssl_certificate /etc/pki/tls/certs/server.chained.crt; ssl_certificate_key /etc/pki/tls/private/server.key; } server { listen YYY174:443 ssl; server_name site1.example.com; [...] proxy_pass http://IISServer01:8081; } server { listen YYY174:443 ssl; server_name site2.example.com; [...] proxy_pass http://IISServer01:8082; } server { listen YYY174:443 ssl; server_name site3.example.com; [...] proxy_pass http://IISServer02:8083; } 

不包括,证书只加载到内存一次,甚至会保持caching,因为用户从子域移动到子域,节省您大量的握手马力。

我无法find任何超出此服务器错误的文章,以提出为什么这个工程,但我可以向你保证,它确实。