AWS EC2部署网站部分页面内容及静态文件加载异常求助
我通过GitHub克隆代码在AWS EC2上部署了网站(访问地址:http://3.17.142.65/)。访问Influencer Marketing页面(http://3.17.142.65/influencers/)和Career页面(http://3.17.142.65/career/)时,服务器能正确从S3 Bucket加载静态文件;但访问首页(http://3.17.142.65/)和Who are We页面(http://3.17.142.65/COE/)时,既无法加载静态文件,也看不到页面内容(原始数据)。想知道这两个页面的内容去向,遗漏了哪些配置?我是AWS和网站部署新手,若有错误请指出,需补充信息可告知。首页及Who are We页面源码可查看对应GitHub仓库目录。
配置Nginx反向代理至Gunicorn
Gunicorn服务配置(systemd)
[Unit] Description=gunicorn daemon Requires=gunicorn.socket After=network.target [Service] User=ubuntu Group=www-data WorkingDirectory=/home/ubuntu/try-django-digital-marketing/try-django-digital-marketing ExecStart=/home/ubuntu/try-django-digital-marketing/try-django-digital-marketing/env/bin/gunicorn \ --access-logfile - \ --workers 3 \ --bind unix:/run/gunicorn.sock \ BE.wsgi:application
Nginx站点配置
server { listen 80; server_name 3.17.142.65; location = /favicon.ico { access_log off; log_not_found off; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } }
S3相关配置
Bucket Policy
{ "Version": "2008-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::try-marketing/*" } ] }
CORS配置
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "POST", "GET", "PUT" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [] } ]
IAM用户策略
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectAcl", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::try-marketing", "arn:aws:s3:::try-marketing/*" ], "Effect": "Allow" } ] }
Django AWS配置文件
AWS_USERNAME = 'user11111' AWS_ACCESS_KEY_ID = 'xxxxxxxxxx' AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxx' AWS_PRELOAD_METADATA = True AWS_QUERYSTRING_AUTH = False AWS_S3_SIGNATURE_VERSION = "s3v4" AWS_S3_REGION_NAME = 'us-east-2' DEFAULT_FILE_STORAGE = 'BE.aws.utils.MediaRootS3BotoStorage' STATICFILES_STORAGE = 'BE.aws.utils.StaticRootS3BotoStorage' AWS_STORAGE_BUCKET_NAME = 'try-marketing' S3DIRECT_REGION = 'us-east-2' S3_URL = '//%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME MEDIA_URL = '//%s.s3.amazonaws.com/media/' % AWS_STORAGE_BUCKET_NAME MEDIA_ROOT = MEDIA_URL STATIC_URL = S3_URL + 'static/' ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' AWS_DEFAULT_ACL = None
可能的配置遗漏与排查方向
URL路由配置问题
检查Django项目的urls.py,确认首页(/)和/COE/的路由是否正确映射到对应视图。部分页面正常说明Gunicorn和Nginx基础代理无问题,大概率是路由缺失或匹配规则错误。注意Django默认的APPEND_SLASH规则,若路由定义为path('COE/', ...),访问/COE会自动重定向,但如果视图异常仍会导致页面加载失败。静态文件同步问题
执行python manage.py collectstatic确保所有静态文件上传至S3的static/目录,检查S3中该目录的文件结构,确认首页和COE页面所需的CSS、JS等资源是否存在且权限为公开可读(Bucket Policy允许GetObject,但文件ACL设为私有仍无法访问)。视图函数异常
通过journalctl -u gunicorn.service查看Gunicorn日志,确认首页和COE页面的视图是否抛出异常(如数据库连接错误、模板不存在等)。若DEBUG = False,Django不会显示错误信息,必须依赖日志排查;若DEBUG = True,访问页面可直接看到错误详情。Django模板路径问题
确认首页和COE页面的模板文件存在于项目templates目录下,且settings.py中的TEMPLATES配置正确。模板不存在会导致视图抛出异常,页面无内容返回。
内容的提问来源于stack exchange,提问作者Rahul Verma

