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;
        }
}