![反向代理重定向流量 ssl “ex: openvpn”](https://linux22.com/image/675169/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E9%87%8D%E5%AE%9A%E5%90%91%E6%B5%81%E9%87%8F%20ssl%20%E2%80%9Cex%3A%20openvpn%E2%80%9D.png)
使用 netscaler,我可以将所有流量 SSL 重定向到取决于其子域的特定主机。
例子:
+-------------+
+-------> |webserver 443|
| +-------------+
+----------+ +--------------+ www.example.com:443
| internet | +----> | reverseproxy |
+----------+ +--------------+
| +-----------+
+-------> |openvpn 443|
+-----------+
vpn.example.com:443
由于我们没有在 Netscaler 上配置任何证书,因此流量只是重定向,并未解密。我们只有一个用于反向代理的证书“通配符”。
我想说的是,我还没有配置 NetScaler。因此,我的配置可能错了。
问题:
- 我想知道是否可以使用 Nginx 或 Squid 等开源软件实现同样的功能?
- 这个配置如何工作?
答案1
在 nginx 上做这件事相当简单。为域(或每个域)定义一个服务器,设置位置以告诉它什么映射到哪里,并使用 proxy_pass 将请求传递到正确的后端服务器。我相信这正是 nginx 的设计目的。
在这种情况下,由于其中一个位于子域中,因此您可以定义两个服务器,并且每个服务器可能只有一个位置,一个位置将所有内容传递出去。如果您想直接从 nginx 提供静态资源,您可以这样做,这可能稍快一些,但可能需要更多努力。
阅读Nginx 作为反向代理。
答案2
你也可以用 来实现这一点haproxy
。示例配置片段:
use_backend server1 if { ssl_fc_sni_reg ^domain1\.com$ }
如果在 SSL 握手期间客户端使用 SNI 来表明它正在与 对话domain1.com
,则这会将流量代理到 server1。