安装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
相关产品推荐
相关产品推荐

