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

在Auto Scaling Group中批量配置Nginx的最优方案

批量修改Auto Scaling Group中EC2实例的Nginx配置方案

方案一:用户数据+实例刷新(一次性完成全实例配置更新)

用户数据本身是实例启动时执行的脚本,结合ASG的实例刷新功能,既能让新配置持久化到启动模板,又能批量替换现有实例:

  • 步骤1:修改ASG的启动模板/配置,更新用户数据脚本,加入Nginx配置修改命令:
    #!/bin/bash
    # 备份原配置文件
    cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
    # 替换server块中的root路径(根据实际配置文件路径调整)
    sed -i 's/root \/usr\/share\/nginx\/html;/root \/usr\/share\/nginx\/html\/public;/g' /etc/nginx/conf.d/default.conf
    # 验证配置并重启Nginx
    nginx -t && systemctl restart nginx
    
  • 步骤2:在ASG控制台启动实例刷新,选择“替换所有实例”模式,ASG会自动逐个替换旧实例为使用新启动配置的实例,完成全实例配置更新。

方案二:AWS Systems Manager Run Command(在线修改无需替换实例)

如果不想替换现有实例,直接在线批量修改:

  • 步骤1:确保所有EC2实例已安装并激活SSM Agent(Amazon Linux 2默认预装,其他系统需手动安装)。
  • 步骤2:进入Systems Manager控制台的Run Command,选择AWS-RunShellScript文档,输入以下命令:
    cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
    sed -i 's/root \/usr\/share\/nginx\/html;/root \/usr\/share\/nginx\/html\/public;/g' /etc/nginx/conf.d/default.conf
    nginx -t && systemctl restart nginx
    
  • 步骤3:选择ASG下的所有实例作为目标,执行命令即可完成批量修改。

方案三:EFS共享Nginx配置(长期统一管理)

如果后续需要频繁同步配置,EFS是更合适的长期方案:

  • 步骤1:创建EFS文件系统,将其挂载到所有EC2实例的Nginx配置目录(比如/etc/nginx/conf.d/)。
  • 步骤2:将修改好root路径的Nginx站点配置文件(如default.conf)上传到EFS挂载目录。
  • 步骤3:确保Nginx主配置加载EFS目录下的配置文件,后续只需修改EFS中的文件,所有实例执行nginx -s reload即可生效。

方案对比

方案适用场景优点缺点
用户数据+实例刷新需统一持久化配置且接受实例替换符合ASG最佳实践,新实例自动继承配置会替换实例,服务有短暂中断
SSM Run Command快速在线修改,无需替换实例操作简单,无实例替换配置未持久化,新实例不会自动继承
EFS共享配置长期统一管理多实例配置一次修改全实例生效需额外管理EFS,产生少量成本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:15:03