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

AWS EC2(Apache)配置Certbot SSL后HTTPS无法访问求助

Laravel应用AWS EC2 Apache配置Certbot后HTTPS无法访问排查方案

核心问题梳理

Laravel应用部署在AWS EC2 Apache服务器上,HTTP访问正常,通过Certbot成功获取SSL证书并配置后,HTTPS无法正常访问页面。

排查与修复步骤

1. 确认Apache SSL模块已启用

Certbot生成的HTTPS虚拟主机配置依赖mod_ssl模块,若未启用则配置不会生效:

  • 检查模块状态:
    httpd -M | grep ssl
    
  • 若无输出,安装并启用模块:
    sudo yum install mod_ssl
    sudo systemctl restart httpd
    

2. 检查AWS EC2安全组规则

EC2实例的安全组必须开放**443端口(HTTPS)**的入站流量:

  • 登录AWS控制台,进入EC2实例的安全组配置
  • 确保存在入站规则:协议为TCP,端口443,来源为0.0.0.0/0(或你需要的访问范围)

3. 验证Apache配置语法正确性

配置文件语法错误会导致Apache无法加载HTTPS虚拟主机:

sudo apachectl configtest

若输出Syntax OK则正常,否则根据提示修复错误(比如标签未闭合、文件路径错误等)。

4. 检查服务器防火墙规则

若服务器启用了firewalld,需确保HTTPS服务被允许:

  • 查看当前开放的服务:
    sudo firewall-cmd --list-all
    
  • 若未看到https服务,添加并重启防火墙:
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    

5. 统一域名配置并修正Laravel环境变量

  • 检查httpd.conf中80端口虚拟主机的ServerName是否与httpd-le-ssl.conf中的一致(当前你的配置中80端口是example.com,SSL配置是online-study-room.jp,需统一为实际域名)
  • 修改Laravel根目录下的.env文件:
    APP_URL=https://online-study-room.jp
    
  • 若需要强制所有路由使用HTTPS,在app/Providers/AppServiceProvider.php的boot方法中添加:
    use Illuminate\Support\Facades\URL;
    
    public function boot()
    {
        URL::forceScheme('https');
    }
    

6. 查看Apache错误日志定位具体问题

若以上步骤未解决,查看错误日志获取详细信息:

tail -f /var/log/httpd/error_log

尝试访问HTTPS页面,日志会输出具体错误(比如证书文件权限不足、路径错误等),针对性修复即可。

7. 确认证书文件权限

确保Apache用户(通常为apache)有权限读取证书文件:

sudo chown -R apache:apache /etc/letsencrypt/live/
sudo chmod -R 755 /etc/letsencrypt/live/

然后重启Apache:

sudo systemctl restart httpd

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:35:23