![在同一服务器上的多个子域之间维护单一 TLS 握手状态](https://linux22.com/image/735841/%E5%9C%A8%E5%90%8C%E4%B8%80%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E5%A4%9A%E4%B8%AA%E5%AD%90%E5%9F%9F%E4%B9%8B%E9%97%B4%E7%BB%B4%E6%8A%A4%E5%8D%95%E4%B8%80%20TLS%20%E6%8F%A1%E6%89%8B%E7%8A%B6%E6%80%81.png)
我目前有两个不同的子域,我想将它们托管在一台服务器上。我希望实现的场景是,当第一个域由于 而失败时SSL handshake error
,第二个域应该能够根据此失败信息重定向到新的第三个子域(针对同一客户端)。因此,虽然第一个子域无法完成 TLS 握手并转到 HTTP 层进行重定向,但第二个域仍然处于活动状态并等待查看第一个域的 TLS 握手是否被拒绝。
从我目前对服务器实现方式的初级了解来看,我认为跨两台服务器传达此 TLS 状态可能是不可能的。但是,我想知道如果我有一台服务器处理所有子域,这是否可行。例如,我是否可以维护与两个子域相关的 TLS 状态的单一信息存储?这在任一服务器配置中都可能实现吗NGINX
?APACHE
或者通过其他途径?
我探索过的可能性之一是map
命令里面nginx
可以设置一个变量,然后在服务器中读取它。也可以使用类似的东西吗?例如,如果握手失败,我可以在子域一中设置变量,然后在我即将从第二个子域重定向以进行条件重定向时读取该变量。
或者,由于我的最终要求是在子域一失败时能够从子域一重定向到子域三,如果我注意到 492 错误代码(指定客户端验证过程中是否存在错误),我是否可以使用错误指令重定向到新的子域,如上所述这里。我通过添加错误页面对此进行了测试:
error_page 492 /home/vagrant/flask_app/app_name/app/static/images/pixel_fail.png
但它似乎不起作用。
非常感谢有关此事的帮助。