You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用子域名访问服务器提示ERR_CONNECTION_REFUSED如何解决?

问题描述

尝试在crypto.hazim.dev上托管内容,已完成域名hazim.dev的注册,并将hazim.dev的DNS记录指向服务器IP地址,在服务器上运行命令:

python3 -m http.server --bind 0.0.0.0 80

此时访问正常。后续删除了hazim.dev的DNS记录,新增crypto.hazim.dev的解析记录,仍指向同一服务器IP,等待DNS解析生效后,运行命令:

nslookup crypto.hazim.dev

返回IP地址正确,但在浏览器地址栏输入crypto.hazim.dev访问时收到错误ERR_CONNECTION_REFUSED,直接在浏览器输入服务器IP访问则一切正常。

核心原因分析
  • 最常见原因:dev顶级域已被谷歌加入HSTS预加载列表,所有*.dev域名都会被浏览器强制要求走HTTPS协议(默认443端口),无法使用HTTP协议(80端口)访问。当前服务器仅监听了80端口的HTTP服务,未监听443端口的HTTPS服务,浏览器访问crypto.hazim.dev时会自动跳转至HTTPS的443端口,服务器无响应就会返回连接拒绝错误。而直接访问IP地址不会触发HSTS规则,所以可以正常走80端口访问。
  • 其他可能原因:本地Hosts文件存在旧的域名映射记录、服务器端配置了基于Host头的访问控制规则、浏览器DNS缓存未清理。
排查解决步骤
  • 第一步:验证HSTS规则影响
    本地执行命令curl -v http://crypto.hazim.dev测试HTTP访问是否正常,如果能正常返回内容,再执行curl -v https://crypto.hazim.dev测试HTTPS访问,如果返回连接拒绝,即可确认是HSTS强制HTTPS导致的问题。
  • 第二步:配置HTTPS服务(核心解决方法)
    可通过Certbot申请免费的Let's Encrypt SSL证书,再选择两种方式部署:
    1. 替换基础的Python HTTP服务,使用支持HTTPS的服务端启动,给Python http.server添加SSL证书参数启动即可
    2. 部署Nginx作为反向代理,监听443端口配置SSL证书,将请求转发到本地80端口的Python HTTP服务即可
  • 第三步:其他异常场景排查
    如果curl测试HTTP也无法访问,按以下步骤排查:
    1. 检查本地Hosts文件:Windows路径为C:\Windows\System32\drivers\etc\hosts,Linux/macOS路径为/etc/hosts,确认没有crypto.hazim.dev的旧映射记录,有则删除后重试
    2. 服务器端本地测试:在服务器执行curl -v -H "Host: crypto.hazim.dev" http://127.0.0.1,如果返回正常说明服务端无Host头限制,异常则检查服务端的访问控制规则
    3. 清理浏览器缓存:Chrome内核浏览器可访问chrome://net-internals/#dns清理DNS缓存后重试

内容的提问来源于stack exchange,提问作者Hazim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:45:04