如何通过 nginx 对文件夹使用客户端证书身份验证?该ssl_client_certificate
指令不允许以location
块形式出现。示例:我希望me.tld
所有客户端都可以访问我的网站,而下面的所有内容me.tld/secure/
只能由经过身份验证的客户端访问。
答案1
我自己没法尝试,但你可以尝试以下方法
您需要ssl_verify_client optional;
沿着旁边走ssl_client_certificate
,然后使用以下位置块
location /secure {
error_page 418 = @other;
recursive_error_pages on;
if ($ssl_client_verify = SUCCESS) {
return 418
}
location @other {
#Secure Config goes here
}
客户端证书将被检查,但不会强制执行所有位置。当有人尝试目录时,/secure
nginx 将检查是否$ssl_client_verify
在该级别成功server
。如果成功,则会出现return
错误418
,我们告诉 nginx 在该位置处理该错误@other
。