为“SSL证书错误”自定义nginx错误页面

11
如果客户选择了已过期的证书,nginx服务器将显示内置的错误页面。
<html>
<head><title>400 The SSL certificate error</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The SSL certificate error</center>
<hr><center>nginx</center>
</body>
</html>

我该如何捕获错误并显示不同的页面给客户端呢?


你查看过文档了吗?http://nginx.org/en/docs/http/ngx_http_ssl_module.html#errors - Alexey Ten
我处理了代码400,但实际上还需要处理其他错误代码。谢谢。 - user3138912
2个回答

11

请参考http://nginx.org/en/docs/http/ngx_http_ssl_module.html#errors

为400状态码定义错误页面是不起作用的。正确的方法是:

server {
    ...
    error_page 495 496 497 https://www.google.com;
    ...
}

如果用户未能提交有效证书,将重定向到google.com。这将在ssl_verify_client设置为onoptional时起作用。


另一种方法仅在$ssl_verify_client设置为optional时起作用,您可以使用$ssl_client_verify进行重定向。

if ($ssl_client_verify = NONE) { 
    return 303 https://www.google.com;
}

$ssl_verify_client设置为on时,它将不起作用。


1
老掉牙的答案,仍然相关;在2023年有显著帮助。 - undefined

5

有一种方法可以向客户展示不同的页面。您需要做的就是按照上述方法进行操作,但是将谷歌网站更改为您创建的页面即可:

server {
    ...
    error_page 495 496 497 /error400.html;
    ...
}

请确保在每个服务器实例中都包含您的所有自定义页面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接