505 版本不兼容:三分钟解决 HTTP 错误
您于调试网站之际, 浏览器忽地弹出“505 HTTP Version Not Supported”。切莫惊慌, 不是服务器出现故障, 而是您的HTTP协议版本未匹配。身为站长或者开发者, 理解随后迅速修复此错误, 能够节省诸多排查时间。
这个错误到底在说什么?
状态码505所表达的是, 服务器针对请求所使用的HTTP版本予以拒绝给予支持, 最为常见的一种场景体现是, 客户端发起的请求采用的是HTTP/2亦或是HTTP/3, 然而服务器或者中间代理能够给予支持的却仅仅只是HTTP/1.1 , 依据RFC 7231这一规范要求, 服务器在响应之中必须要明确地将其所支持的协议版本作出告知。
排查步骤
1. 检查客户端协议
将浏览器开发者工具打开(F12方式), 于“网络”标签页之中, 对请求里“协议”那一列予以查看。要是呈现为h2或者h3, 然而服务器仅仅支持http/1.1, 那么505便会被触发。
2. 检查服务器配置
listen 443 ssl http2;
要是缺失 http2, 那就添加, 添加之后再进行重启操作: systemctl restart nginx。
LoadModule http2_module modules/mod_http2.so Protocols h2 http/1.1
CDN或反向代理, 若采用Cloudflare或者Nginx来做反向代理, 核查上层有没有强制将HTTP版本进行升级, 然而底层源站并不支持, 能够在代理层实施配置降级:
proxy_http_version 1.1;
3. 验证修复
使用 curl 模拟请求:
curl -I --http2 https://yourdomain.com
要是返回的是200 OK , 那么问题便得到了解决。倘若依旧报出505 , 那就去检查一下是不是存在防火墙或者WAF拦截了特定协议的握手。
为什么推荐优先统一到 HTTP/1.1?
将W3Techs于2025年统计得出的数据来看, 依旧存在着大约12%的处于活跃状态的网站是完全依据HTTP/1.1来运行的, 并且其具备着最佳的兼容性。要是你的服务器有对老旧客户端进行支持的需求(像是某些物联网设备或者旧版浏览器之类),那么强行将HTTP/2关闭了的话, 反倒会更加稳定一些。配置的示例如下:
server {
listen 443 ssl;
http2 off; # 禁用 HTTP/2
...
}避免踩坑
不能直接对.htaccess进行修改, 505错误一般并非处于应用层, 去修改.htaccess是没有成效的。
察看代理锁链, 倘若历经多层反向代理, 每一层都全都要明确表明所支持的 HTTP 版本, 不然中间节点有可能私自提升协议。
要是碰到更为繁杂的协议兼容情形, 建议借助在线调试工具予以辅助验证, 迅速将问题节点定位出来:
否玩代码编辑 https://www.fouwan.com


