先把“访问不了”拆成具体故障

HTTPS 出问题时,不要只看浏览器提示。先用命令把故障定位到网络、Nginx、证书还是站点配置。

HTTP 能访问,HTTPS 超时 优先查 443 端口、安全组、Nginx 监听
HTTPS 提示证书不匹配 优先查证书绑定域名和 server_name
HTTPS 返回 404 或旧站内容 优先查 Nginx server 块是否命中新域名
01

确认域名解析到当前服务器

先在本机查解析结果:

nslookup kfnoodles.top
nslookup www.kfnoodles.top

如果你只打算使用裸域名,不使用 www,那至少要确认 kfnoodles.top 指向 AWS 服务器公网 IP。

服务器上也可以用:

curl -I http://kfnoodles.top/
curl -Iv https://kfnoodles.top/

curl -Iv 能看到 TLS 握手、证书和具体失败原因,比浏览器提示更直接。

02

确认 AWS 安全组放行 443

在 AWS EC2 控制台检查当前实例绑定的 Security Group。入站规则至少要有:

HTTP TCP 80,来源 0.0.0.0/0 和 ::/0
HTTPS TCP 443,来源 0.0.0.0/0 和 ::/0
SSH TCP 22,建议只放自己的 IP
不要把 SSH 也全网开放当成默认配置

HTTP/HTTPS 面向公网是正常的,但 SSH 最好限制来源 IP,至少不要为了排障长期暴露给所有地址。

03

确认 Nginx 真的监听了 80 和 443

服务器上执行:

sudo ss -lntp | grep -E ':80|:443'
sudo nginx -t

正常情况下应该看到 Nginx 监听 :80:443。如果只有 :80,HTTPS 一定访问不了。

修改配置后先测试,再重载:

sudo nginx -t
sudo systemctl reload nginx
04

确认证书签给了新域名

如果你用 Certbot,可以签发或补签新域名证书:

sudo certbot --nginx -d kfnoodles.top

如果同时使用 www,再加一个域名:

sudo certbot --nginx -d kfnoodles.top -d www.kfnoodles.top

检查证书时重点看两点:

  • 证书里的域名包含 kfnoodles.top
  • Nginx 配置里的 ssl_certificate 指向新域名证书路径
05

使用一个清晰的最小 Nginx 配置

静态站先保持配置简单,避免多个 server 块互相抢域名。示例:

server {
    listen 80;
    server_name kfnoodles.top;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name kfnoodles.top;

    root /var/www/kfnoodles.top;
    index index.html;

    ssl_certificate /etc/letsencrypt/live/kfnoodles.top/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/kfnoodles.top/privkey.pem;

    location / {
        try_files $uri $uri/ =404;
    }
}

如果服务器上还保留旧域名配置,要确认旧配置没有把新域名写进同一个 server_name,也没有默认站点意外接管 443 请求。

06

从日志确认请求到底进了哪个站点

如果浏览器能打开但内容不对,或者返回 404,看访问日志和错误日志:

sudo tail -50 /var/log/nginx/access.log
sudo tail -50 /var/log/nginx/error.log

如果你给站点单独配置了日志,例如:

access_log /var/log/nginx/kfnoodles.top.access.log;
error_log /var/log/nginx/kfnoodles.top.error.log;

排障会更直接,能知道请求是否命中了这个站点配置。

最终验证清单

curl -I http://kfnoodles.top/
curl -I https://kfnoodles.top/
curl https://kfnoodles.top/robots.txt
curl https://kfnoodles.top/sitemap.xml
sudo nginx -t
sudo ss -lntp | grep -E ':80|:443'
  • http:// 能 301 跳转到 https://
  • https:// 返回 200 OK
  • robots.txt 能打开并指向 sitemap
  • sitemap.xml 返回 XML,不是 404 或旧域名
  • Nginx 配置测试通过,且监听 80/443

FAQ

HTTP 能访问,HTTPS 不能访问,最可能是什么问题?

优先查 443。包括 AWS 安全组是否放行 443、Nginx 是否监听 443、服务器防火墙是否拦截 443。

换了新域名后,可以继续用旧证书吗?

不能直接用。证书必须覆盖当前访问的域名,否则浏览器会提示证书不匹配。

Nginx 重载后网站访问不了怎么办?

先执行 sudo nginx -t。如果配置测试不通过,不要重载。已经重载后出问题,就看 error.log,通常能看到配置路径、证书路径或权限错误。

HTTPS 稳定后,下一步应该确认搜索引擎能读取 sitemap:

Google 站点地图显示“无法抓取”怎么办?