确认EB环境配置正确:检查是否提供了正确的数据库URL和其他必需的环境变量。
确认实例状态正常:如果应用程序可能会在大负载下运行,请确保实例而不是ELB调用为罪魁祸首。检查“EB Events”选项卡中是否有任何正在进行的“Instance Launch/Update”事件。
隔离问题:使用 awsebcli 提交应用程序时发生 Bad Gateway 错误的原因可能有很多。最好的方法是使用 eb ssh 登录到实例中,并在容器的 docker logs 中查找输出。
这里是示例EB配置文件 .ebextensions/django.configs 文件的示例,其中包括证书路径,数据库 URL 和其他配置。
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: 'config.settings.production'
DB_USER: 'user'
DB_PASSWORD: 'pass'
DB_HOST: 'mydb.'
DB_NAME: 'mydb'
ALLOWED_HOSTS: 'myapp-alias.elasticbeanstalk.com'
AWS_SECRET_ACCESS_KEY: 'secret_access_key'
AWS_ACCESS_KEY_ID: 'access_key_id'
aws:elasticbeanstalk:container:python:
WSGIPath: 'config/wsgi.py'
NumProcesses: 3
NumThreads: 20
aws:elb:policies:
IdlingTimeout: '1200'
ClientTimeout: '1300'
aws:autoscaling:launchconfiguration:
InstanceType: 't2.small'
aws:ec2:instances:
InstanceTypes: 't2.small'
aws:cloudwatch:logs:configuration:
EnableLogRotation: true
commands:
01_install_ssl_certs:
command: |
sudo mkdir -p /etc/pki/tls/certs
sudo mkdir -p /etc/pki/tls/private
sudo chmod 700 /etc/pki/tls/private