您好!欢迎访问否玩代码!
My title page contents
广告位

505 版本不兼容:三分钟解决 HTTP 错误

栏目: 日期: 浏览:151

您于调试网站之际, 浏览器忽地弹出“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