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

安装Certbot后Nginx返回404 Not Found错误求助

解决Certbot安装SSL后Nginx 404错误的问题

嘿,我看了你遇到的问题——Certbot装完SSL后明明提示成功,结果刷新网页却碰到Nginx 404,这确实挺闹心的。我帮你梳理下可能的问题点和解决办法:

1. 域名匹配范围太窄是大概率原因

先看你80端口的Nginx配置块:

if ($host = www.mydomain.com) {
    return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
server_name www.mydomain.com;
return 404; # managed by Certbot

这段配置的问题在于:只有当用户访问www.mydomain.com的HTTP请求才会被跳转到HTTPS,如果你直接输入裸域名mydomain.com(不带www)访问,Nginx找不到对应的匹配规则,就会直接返回404。

你可以把这段配置改成下面这样,让所有HTTP请求(不管是裸域名还是www域名)都跳转到HTTPS的www版本:

server {
    listen 80;
    server_name mydomain.com www.mydomain.com;
    return 301 https://www.mydomain.com$request_uri;
}

2. 先确认你的Flask后端还在正常跑

Certbot安装过程中会自动重启Nginx,但你的Flask服务(比如用Gunicorn或者uWSGI托管的)可能没跟着启动,或者重启Nginx的时候意外挂了。

先检查8000端口有没有服务在监听:

sudo lsof -i :8000
# 或者用netstat,看你习惯哪个
sudo netstat -tulpn | grep 8000

如果没任何输出,说明Flask服务没运行,赶紧重启你的WSGI服务(比如sudo systemctl restart gunicorn,具体命令得看你当初怎么配置的服务)。

3. 静态文件路径的权限和正确性也得查

你的静态文件配置是:

location /static {
    alias /home/ubuntu/adviser/flaskblog/static;
}

要确认两件事:

  • 这个路径真的存在:ls /home/ubuntu/adviser/flaskblog/static,要是显示文件列表就没问题,要是提示不存在就得核对路径。
  • Nginx的运行用户(一般是www-data)能访问这个路径:
    sudo chmod -R 755 /home/ubuntu/adviser/flaskblog/static
    sudo chown -R www-data:www-data /home/ubuntu/adviser/flaskblog/static
    

4. 修改配置后别忘了测试和重启Nginx

每次改完Nginx配置,先跑个测试确保没语法错误:

sudo nginx -t

要是输出test is successful,就重启Nginx让配置生效:

sudo systemctl restart nginx

按这几步走下来,应该就能解决404的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:44:16