我在 Google 上搜索了一下,似乎 nginx 没有提供基于路径进行客户端 TLS 验证的方法。我只是想问问社区是否仍然如此,或者是否有某种解决方法。
我基本上是想拥有一个管理页面domain-name/admin
,其中访问公共域名只需要服务器端 TLS 验证,但我希望仅对 /admin 路径进行相互 TLS 验证。这是否可行,而无需为管理员获取新域?
答案1
原因在于 nginx 直到 TLS 层设置完成后才了解路径(请求的一部分),因此它无法回到过去并改变需要客户端证书的想法。
另一个解决方法可能是将 /admin 重定向到另一个主机名,例如admin.domain-name(您需要一个通配符证书),然后它应该能够在该级别强制执行客户端证书。
否则,如果您尝试使客户端证书可选,每个客户端都会弹出一个对话框,要求他们选择客户端证书。