Django + nginx + gunicorn 无法提供静态文件
Django + nginx + gunicorn not being able to serve static files
我正在尝试在 EC2 实例中部署一个 django 应用程序,但我目前在提供该应用程序的静态文件时遇到问题。
目前,我的 nginx 的 conf 文件如下所示:
# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://0.0.0.0:8000;
}
location /static/ {
#autoindex on;
root /home/ubuntu/some/folder/static/;
}
}
同样在我的 django 项目的 settings.py 文件中,我有以下与我的静态文件相关的配置:
STATIC_URL = '/static/'
STATIC_ROOT = '/home/ubuntu/some/folder/static/'
还有 Gunicorn,我按如下方式启动它:
gunicorn3 --bind 0.0.0.0:8000 myproject.wsgi:application
然后,如果我访问 http://ec2-my-instance,我会看到 html 内容,但我所有的 js 和 css 文件都会出现错误 404。
我有点迷路了,我不知道我缺少什么让它工作,我已经迁移了静态内容并且我检查了 nginx 正在寻找静态文件的文件夹,但是如果我检查了浏览器的控制台,我看到了这种错误:
GET http://ec2-my-instance/static/somefile.js net::ERR_ABORTED 404 (Not Found)
你想要 'alias' 而不是 'root':
location /static/ {
alias /home/ubuntu/some/folder/static/;
}
我正在尝试在 EC2 实例中部署一个 django 应用程序,但我目前在提供该应用程序的静态文件时遇到问题。
目前,我的 nginx 的 conf 文件如下所示:
# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://0.0.0.0:8000;
}
location /static/ {
#autoindex on;
root /home/ubuntu/some/folder/static/;
}
}
同样在我的 django 项目的 settings.py 文件中,我有以下与我的静态文件相关的配置:
STATIC_URL = '/static/'
STATIC_ROOT = '/home/ubuntu/some/folder/static/'
还有 Gunicorn,我按如下方式启动它:
gunicorn3 --bind 0.0.0.0:8000 myproject.wsgi:application
然后,如果我访问 http://ec2-my-instance,我会看到 html 内容,但我所有的 js 和 css 文件都会出现错误 404。
我有点迷路了,我不知道我缺少什么让它工作,我已经迁移了静态内容并且我检查了 nginx 正在寻找静态文件的文件夹,但是如果我检查了浏览器的控制台,我看到了这种错误:
GET http://ec2-my-instance/static/somefile.js net::ERR_ABORTED 404 (Not Found)
你想要 'alias' 而不是 'root':
location /static/ {
alias /home/ubuntu/some/folder/static/;
}