nginx django gunicorn 404 静态文件未加载
nginx django gunicorn 404 static file not loading
我已经尝试解决这个错误将近 13 个小时,寻找了数以千计的 Whosebug 问题和其他社区的问题,但我仍然找不到答案。
我正在尝试什么要做的是解决 nginx 不提供静态文件的问题。
正如我在上面所说的,我尝试了数千个答案,其中 none 似乎对我有用。
我 post 只有 nginx /sites-available/ 中的脚本,因为我认为这是这个问题的主要脚本。
server {
listen 80;
server_name localhost 127.0.0.1;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
autoindex on;
alias /home/ngx/pid/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
我使用 gunicorn 来加载 django,而且前端是用 React 制作的,所以没有 main.js
我什么也做不了。
ngx
不是默认用户 - 我做到了,而且我遵循了 this DigitalOcean 教程。(虽然我没有遵循所有这些 - 我在阅读其他人的答案后进行了编辑。
Directory
/home/ngx/pid (django root)
ㄴ diary (project root - settings.py, wsgi.py etc.)
ㄴ djenv (virtualenv)
ㄴ frontend (react)
ㄴ manage.py
ㄴ static (made by python3 manage.py collectstatic)
错误URL:
http://example.com/static/css/index.css
http://example.com/static/frontend/main.js
<- 反应 JS 文件
错误代码:404 Not Found
我认为您应该尝试以下配置:
location /static/ {
root /home/ngx/pid;
}
Alias
用于定义指定位置的替换,可能是它不起作用的原因。
我没有提到我正在使用 DDNS 和端口转发我的 Linux 机器来从外部互联网访问。
而且我也是 Nginx 的新手我没有知道我必须在 server_name
添加网站域名。
我将我的网站域名添加到 server_name
现在它可以正常工作了。
它类似于 ALLOWED_HOSTS
在 Django 中。
感谢所有帮助过我的人。
有效的代码
server {
listen 80;
server_name localhost 127.0.0.1 MYSITE_DOMAIN;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ngx/pid;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
我已经尝试解决这个错误将近 13 个小时,寻找了数以千计的 Whosebug 问题和其他社区的问题,但我仍然找不到答案。
我正在尝试什么要做的是解决 nginx 不提供静态文件的问题。
正如我在上面所说的,我尝试了数千个答案,其中 none 似乎对我有用。
我 post 只有 nginx /sites-available/ 中的脚本,因为我认为这是这个问题的主要脚本。
server {
listen 80;
server_name localhost 127.0.0.1;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
autoindex on;
alias /home/ngx/pid/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
我使用 gunicorn 来加载 django,而且前端是用 React 制作的,所以没有 main.js
我什么也做不了。
ngx
不是默认用户 - 我做到了,而且我遵循了 this DigitalOcean 教程。(虽然我没有遵循所有这些 - 我在阅读其他人的答案后进行了编辑。
Directory
/home/ngx/pid (django root)
ㄴ diary (project root - settings.py, wsgi.py etc.)
ㄴ djenv (virtualenv)
ㄴ frontend (react)
ㄴ manage.py
ㄴ static (made by python3 manage.py collectstatic)
错误URL:
http://example.com/static/css/index.css
http://example.com/static/frontend/main.js
<- 反应 JS 文件
错误代码:404 Not Found
我认为您应该尝试以下配置:
location /static/ {
root /home/ngx/pid;
}
Alias
用于定义指定位置的替换,可能是它不起作用的原因。
我没有提到我正在使用 DDNS 和端口转发我的 Linux 机器来从外部互联网访问。
而且我也是 Nginx 的新手我没有知道我必须在 server_name
添加网站域名。
我将我的网站域名添加到 server_name
现在它可以正常工作了。
它类似于 ALLOWED_HOSTS
在 Django 中。
感谢所有帮助过我的人。
有效的代码
server {
listen 80;
server_name localhost 127.0.0.1 MYSITE_DOMAIN;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ngx/pid;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}