我是Django开发和Nginx配置的新手。一旦使用gunicorn和Nginx在amazon EC2中部署应用程序,页面加载时不会出现静态文件(css,js等)。
我怀疑Nginx无法加载静态文件。我花了几个小时试图调整Nginx配置,并阅读其他答案,但仍然没有运气。
任何正确方向的提示都表示赞赏。
在/ etc / nginx的/网站可用/ SBS
server{
listen 80;
server_name my_server_host;
location = /favicon.ico {
access_log off; log_not_found off;
}
location /static/ {
autoindex on;
root /home/ubuntu/secure-banking-system/sbs/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/secure-banking-system/sbs/sbs.sock;
}
}
settings.朋友
STATIC_ROOT = '/home/ubuntu/secure-banking-system/sbs/static'
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'sbs/static')
]
我已经验证了静态文件在/home/ubuntu/secure-banking-system/sbs/static/
中可用
文件结构
secure-banking-system
|
|──sbs
|
|────│
│
├── sbs
│ |
│ └── static
│ ├── css
│ ├── images
│ └── js
|
├── static
├── css
├── images
└── js
root
指令不会从请求中删除/static
部分。所以请求
http://my_server_hos/static/foo/test.png
会让nginx寻找一个文件
/home/ubuntu/secure-banking-system/sbs/static/static/foo/test.png
。
了解这一点,/static
位置的配置应该是:
location /static {
autoindex on;
root /home/ubuntu/secure-banking-system/sbs;
}
另一种方法是使用alias
指令:
location /static {
autoindex on;
alias /home/ubuntu/secure-banking-system/sbs/static;
}
这最终对我有用。我还清除了Python缓存文件和* .pyc,因为我在settings.py中的更改没有反映出来。
在/ etc / nginx的/网站可用/ SBS
server{
listen 80;
server_name my_server_host;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
alias /home/ubuntu/secure-banking-system/sbs/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/secure-banking-system/sbs/sbs.sock;
}
}
settings.朋友
STATIC_ROOT = os.path.join(BASE_DIR, 'sbs/static/')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'sbs/static/')
]