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

AWS Elastic Beanstalk项目settings.py环境变量配置与本地运行问题

AWS Elastic Beanstalk Django项目本地+生产兼容配置方案

一、ALLOWED_HOSTS 核心配置

给两种实用方案,按需选择:

  • 本地文件隔离法(推荐)
    1. 在项目根目录新建local_settings.py,写入:
      ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
      
    2. 在settings.py末尾添加这段代码:
      try:
          from .local_settings import *
      except ImportError:
          pass
      
    3. 把local_settings.py放进.gitignore,避免上传到EB。生产环境自动读取EB环境变量配置的ALLOWED_HOSTS,本地启动时会加载这个文件的配置。
  • 环境变量区分法
    在settings.py里通过环境变量判断运行环境:
    import os
    
    # 默认本地环境,EB中需设置为production
    ENVIRONMENT = os.getenv('ENVIRONMENT', 'local')
    
    if ENVIRONMENT == 'production':
        # EB环境属性中设置ALLOWED_HOSTS为生产域名,多个用逗号分隔
        ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS', '').split(',')
    else:
        ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
    
    然后去EB控制台的环境属性里添加ENVIRONMENT=production,以及ALLOWED_HOSTS=your-app.elasticbeanstalk.com(替换为你的实际生产域名)。

二、os.getenv vs os.environ 怎么选?

直接用os.getenv就好。它支持设置默认值,比如os.getenv('DB_PORT', '5432'),就算环境变量未配置也不会报错崩溃;而os.environ['DB_PORT']如果变量不存在会直接抛出KeyError,容错性差。统一用os.getenv,代码更规范也更安全。

三、EB环境属性要不要加127.0.0.1?

完全没必要。EB生产环境的请求都是通过外部域名或负载均衡发起的,127.0.0.1是EC2实例的本地回环地址,生产场景根本用不上,添加后纯属多余,甚至可能带来不必要的安全风险。

内容的提问来源于stack exchange,提问作者Paweł Pedryc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:10:07