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

Amazon Linux 2单实例Elastic Beanstalk配置HTTPS遇访问失败求助

解决Amazon Linux 2 Elastic Beanstalk(PHP8.1)单实例HTTPS配置问题

为什么mod24_ssl找不到?

Amazon Linux 2不再提供mod24_ssl包,这个包属于旧版Amazon Linux AMI(AL1)。Amazon Linux 2中对应的SSL模块包是mod_ssl,你替换成这个包是正确的,但还需要完成后续Apache配置、证书部署和安全组设置才能正常访问HTTPS。

自动化配置步骤(无需手动SSH)

通过Elastic Beanstalk的.ebextensions配置文件实现全自动化部署,新增实例会自动执行所有配置步骤。

1. 创建.ebextensions/https.config配置文件

在项目根目录新建.ebextensions文件夹,里面创建https.config文件,内容如下:

# 安装mod_ssl模块
packages:
  yum:
    mod_ssl: []

# 配置Apache SSL虚拟主机
files:
  "/etc/httpd/conf.d/ssl.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      <VirtualHost *:443>
        DocumentRoot /var/www/html
        SSLEngine on
        # 替换为你的证书和密钥路径
        SSLCertificateFile "/etc/pki/tls/certs/server.crt"
        SSLCertificateKeyFile "/etc/pki/tls/private/server.key"
        # 如果有证书链,取消下面注释并替换路径
        # SSLCertificateChainFile "/etc/pki/tls/certs/chain.crt"

        # 保持和默认HTTP站点一致的PHP目录权限配置
        <Directory /var/www/html>
          AllowOverride All
          Require all granted
        </Directory>

        ErrorLog /var/log/httpd/ssl_error.log
        CustomLog /var/log/httpd/ssl_access.log combined
      </VirtualHost>

  # 可选:自动将HTTP请求重定向到HTTPS
  "/etc/httpd/conf.d/redirect.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      <VirtualHost *:80>
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
      </VirtualHost>

# 执行必要的系统命令
commands:
  # 确保证书密钥权限正确(Apache要求密钥权限为600)
  01_set_key_perms:
    command: "chmod 600 /etc/pki/tls/private/server.key"
  # 重启Apache使配置生效
  02_restart_httpd:
    command: "systemctl restart httpd"

2. 部署SSL证书到实例

方式1:通过S3自动下载证书

将你的SSL证书(server.crt)、密钥(server.key)和证书链(如果有)上传到S3存储桶,然后在https.config的commands段添加下载命令:

commands:
  # 新增下载证书的命令
  00_download_cert:
    command: "aws s3 cp s3://your-bucket-name/server.crt /etc/pki/tls/certs/"
  00_download_key:
    command: "aws s3 cp s3://your-bucket-name/server.key /etc/pki/tls/private/"
  # 原有的权限设置和重启命令...

注意要给Elastic Beanstalk的EC2实例角色(默认是aws-elasticbeanstalk-ec2-role)添加S3读取权限。

方式2:直接嵌入证书到配置文件

如果证书内容较短,可以直接在files段写入证书内容,比如:

files:
  "/etc/pki/tls/certs/server.crt":
    mode: "000644"
    content: |
      -----BEGIN CERTIFICATE-----
      # 你的证书内容
      -----END CERTIFICATE-----
  "/etc/pki/tls/private/server.key":
    mode: "000600"
    content: |
      -----BEGIN PRIVATE KEY-----
      # 你的密钥内容
      -----END PRIVATE KEY-----

3. 配置安全组

修改Elastic Beanstalk环境的安全组,添加HTTPS入站规则:

  • 类型:HTTPS (443)
  • 来源:根据需求设置为0.0.0.0/0(允许所有访问)或指定IP范围
  • 确保HTTP (80)端口也允许(如果配置了HTTP到HTTPS的重定向)

4. 部署应用

将包含.ebextensions文件夹的代码包上传到Elastic Beanstalk,部署完成后实例会自动完成所有配置。

排查HTTPS访问失败的常见问题

  • 安全组未开放443端口:检查EC2实例的安全组入站规则,确认443端口已开放
  • 证书/密钥路径错误或权限不对:查看/var/log/httpd/ssl_error.log日志,里面会明确提示无法读取证书或密钥的原因
  • Apache配置语法错误:登录实例执行httpd -t验证配置文件语法,修复错误后重启Apache
  • 实例网络问题:确认实例有公网IP,且能正常访问公网

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:47:12