首页 新闻 会员 周边

nginx 如何自定义400错误页面(400 Bad Request)

0
悬赏园豆:5 [已解决问题] 解决于 2019-01-25 15:59

nginx 配置如下:
server {
listen 443 default_server;
ssl on;
ssl_certificate /etc/nginx/domain.com.crt;
ssl_certificate_key /etc/nginx/domain.com.key;
return 444;
}

server {
listen 443;
server_name www.domain.com;
ssl on;
ssl_certificate /etc/nginx/domain.com.crt;
ssl_certificate_key /etc/nginx/domain.com.key;
location / {
proxy_pass http://myserver;
}
}

通过 https://www.domain.com 访问,正常
通过 https://ip 访问,返回444,也正常
通过 http://ip:443 访问,返回“400 Bad Request”,错误页面如下:

400 Bad Request,The plain HTTP request was sent to HTTPS port

问题是怎样自定义这个400错误页面?

大豆男生的主页 大豆男生 | 小虾三级 | 园豆:608
提问于:2019-01-25 12:35
< >
分享
最佳答案
2

这错误实际上是497错误。
要显示自定义错误,就要Catch 497错误。
具体方法有两个:
(1)跳转到主页: error_page 497 https://www.domain.com;
(2)显示自定义错误:
error_page 497 /497.html;
location = /497.html {
}

完整的代码是:
server {
listen 443 default_server;
root /var/www/html;
ssl on;
ssl_certificate /etc/nginx/domain.com.crt;
ssl_certificate_key /etc/nginx/domain.com.key;

location / {
    return 444;
}

# Catch the error: "400 Bad Request, 
#     The plain HTTP request was sent to HTTPS port"
# 重定向497到https主页
# error_page 497  https://www.domain.com;
# 显示自定义497错误
error_page 497 /497.html;
    location = /497.html {
}

}

大豆男生 | 小虾三级 |园豆:608 | 2019-01-25 15:47
其他回答(1)
0
收获园豆:5
ycyzharry | 园豆:25651 (高人七级) | 2019-01-25 14:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册