Apache 特定位置的Nginx证书身份验证

Apache 特定位置的Nginx证书身份验证,apache,nginx,Apache,Nginx,我使用Apache创建了一个HTTPS站点,其中包含一个名为secure[我希望通过用户和密码访问]的文件夹和另一个名为verysecure[我希望通过证书身份验证访问]的文件夹 当我使用访问站点时,我得到了根目录中的默认index.html文件,这是意料之中的。当我访问时,我会提供用户和密码,并获取该文件夹中的index.html文件。当我访问证书弹出窗口时,允许我选择要使用的证书,这样做时,我会得到位于该文件夹中的index.html文件 如何配置Nginx,使证书选择器弹出窗口仅在我访问时

我使用Apache创建了一个HTTPS站点,其中包含一个名为secure[我希望通过用户和密码访问]的文件夹和另一个名为verysecure[我希望通过证书身份验证访问]的文件夹

当我使用访问站点时,我得到了根目录中的默认index.html文件,这是意料之中的。当我访问时,我会提供用户和密码,并获取该文件夹中的index.html文件。当我访问证书弹出窗口时,允许我选择要使用的证书,这样做时,我会得到位于该文件夹中的index.html文件

如何配置Nginx,使证书选择器弹出窗口仅在我访问时出现,而不是在我访问或访问时出现?

根据官方Nginx开发论坛的线程,您不能这样做(尽管该线程已经使用了近10年,但Nginx仍然不支持SSL/TLS重新握手)。igorsysoev建议的唯一解决方法是使用可选的客户端证书验证

ssl_verify_client optional;
然后检查变量值:

location /verysecure/
    if ($ssl_client_verify != SUCCESS) {
        # deny client
        return 403;
        # or process the request on some internal location, see
        # http://nginx.org/en/docs/http/ngx_http_core_module.html#internal
        # rewrite ^ /internal last;
    }
    ...
}

但是,使用此解决方法,在初始TLS握手时,不仅在访问
/verysecure/
URI时,证书选择器窗口将弹出(仅适用于安装了正确证书的客户端)。

谢谢@Ivan,但这正是我现在正在做的。但是,我被要求提供与使用nginx的Apache完全相同的功能。我会继续查找,或者发布答案(如果我找到的话),或者接受你的答案。可以使用
lua nginx模块
(查看文档部分和下面),进行一些SSL定制,但是我怀疑即使使用该模块也能实现行为。