Nginx基于497错误码实现单端口HTTP自动跳转HTTPS
- Nginx
- 2025-08-15
- 65热度
- 0评论
HTTP 状态码 497,“HTTP 请求发送到 HTTPS 端口”,是 Nginx 特有的错误代码。当客户端尝试使用 HTTP 协议连接到预期为 HTTPS 的端口时,Nginx 会返回此错误。此错误表示协议不匹配,服务器拒绝了该请求。
Nginx 配置:
server {
listen 8442 ssl;
server_name localhost;
ssl_certificate ssl/test.crt;
ssl_certificate_key ssl/test.key;
location / {
proxy_pass http://192.168.1.101:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 捕获SSL协议错误,并重定向到HTTPS
error_page 497 = @redirect_to_https;
location @redirect_to_https {
return 301 https://$host:$server_port$request_uri;
}
}
通过上述配置,当用户通过 HTTP 协议访问 http://192.168.1.101:8442 时,Nginx 服务器会响应一个 301 重定向,将用户自动引导至 https://192.168.1.101:8442。这种配置不仅提升了安全性,确保所有通信都通过加密的 HTTPS 进行,还优化了用户体验,避免了因协议不匹配而产生的错误。

鲁ICP备19063141号
鲁公网安备 37010302000824号