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

单实例Elastic Beanstalk Node.js应用HTTPS连接被拒绝求助

我之前也碰到过一模一样的问题,折腾了好一阵才搞定,给你列几个排查方向,按顺序来应该能找到问题:

先检查安全组配置(最容易踩坑的点!)

Elastic Beanstalk的EC2实例安全组必须开放443端口的入站流量,否则直接会拒接HTTPS请求:

  • 登录AWS控制台,找到你的Elastic Beanstalk环境对应的EC2实例
  • 进入实例的安全组设置,添加入站规则:
    • 类型:HTTPS
    • 协议:TCP
    • 端口范围:443
    • 源:根据你的需求设置(比如0.0.0.0/0或者特定IP段)
  • 一定要记得保存规则,有时候哪怕配置文件里做了全对的设置,安全组没开端口直接就白搭
验证.ebextensions配置文件的正确性

官方文档的配置细节很容易错,你可以对照检查这几点:

  • 确认.ebextensions文件夹在压缩包的根目录,不能嵌套在其他文件夹里(比如不能是app/.ebextensions,必须和你的server.js等核心文件同级)
  • 打开https-instance-single.config,检查关键配置:
    • 有没有正确指定证书的ARN?比如:
      aws:elb:listener:443:
        ListenerProtocol: HTTPS
        InstancePort: 80
        InstanceProtocol: HTTP
        SSLCertificateId: arn:aws:acm:us-east-1:123456789012:certificate/abcdefg-1234-5678-90ab-cdefghijklmn
      
    • 单实例环境下,aws:elasticbeanstalk:environment:proxy部分是不是设置了正确的转发?比如:
      aws:elasticbeanstalk:environment:proxy:
        ProxyServer: nginx
        StaticFiles: /public/=public/
      
    • 检查YAML语法有没有错误(比如缩进不对、冒号后面没空格),YAML对格式特别敏感,一点点小错误都会导致配置完全不生效
检查EC2实例上的Web服务器配置是否生效

如果配置文件没问题,登录到EC2实例里直接看Web服务器的状态:

  • 用EB CLI或者AWS控制台的“连接”功能进入实例
  • 对于Nginx,检查/etc/nginx/conf.d/elasticbeanstalk/00_application.conf或者00_https_redirect.conf有没有正确生成443端口的配置
  • 运行sudo service nginx status看看服务是否正常,没启动就手动启动sudo service nginx start,顺便看/var/log/nginx/error.log有没有报错
  • 如果是Apache,检查/etc/httpd/conf.d/ssl.conf相关配置,同样看服务状态和日志
确认证书是否有效且匹配域名
  • 检查你用的ACM证书是不是已经颁发成功,并且域名和你访问的HTTPS域名完全一致(比如证书是example.com,你访问www.example.com就会出问题,得用通配符证书或者包含子域名的证书)
  • 证书不能过期,也不能是在其他区域创建的(单实例环境下,Elastic Beanstalk所在区域必须和证书区域一致)
测试实例本地的HTTPS连接

在EC2实例内部,用curl https://localhost测试一下:

  • 如果能正常返回内容,说明实例内部服务没问题,问题出在外部网络或者安全组
  • 如果连本地都访问不了,那就是Web服务器配置的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:48:44