【问题标题】:nginx django gunicorn 404 static file not loadingnginx django gunicorn 404静态文件未加载
【发布时间】:2021-08-08 14:34:06
【问题描述】:

我已经尝试解决这个错误将近 13 个小时,寻找成千上万的 stackoverflow 问题和其他社区的问题,但我仍然找不到答案。
我正在尝试做的是解决 nginx不提供静态文件。
正如我在顶部所说,我尝试了数千个答案,但似乎没有一个适合我。

我只在 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 不是默认用户 - 我做到了,我也关注了 @987654321 @教程。(虽然我没有全部关注 - 我在阅读其他人的答案后进行了编辑。

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)

错误网址:
http://example.com/static/css/index.css
http://example.com/static/frontend/main.js

错误代码:404 Not Found

【问题讨论】:

  • 代替alias /home/ngx/pid/static/; 可以试试alias /home/ngx/pid/; 吗?你跑collectstatic了吗?
  • location 和 alias 必须有相同的前导/尾随斜杠
  • 不起作用...
  • 试试root /home/ngx/pid;而不是alias /home/ngx/pid/static/;
  • 我试过了,但也没有用...

标签: django nginx gunicorn django-staticfiles


【解决方案1】:

我认为你应该尝试以下配置:

location /static/ {
                root /home/ngx/pid;
        }

Alias 用于定义指定位置的替换,可能是它不起作用的原因。

【讨论】:

    【解决方案2】:

    我没有提到我正在使用 DDNS 和端口转发我的 Linux 机器以从外部 Internet 访问。
    我也是 Nginx 的新手,我不知道我必须添加该站点域名server_name。
    我将我的站点域添加到server_name,现在它可以正常工作了。
    它类似于Django中的ALLOWED_HOSTS。
    感谢所有帮助我的人。

    有效的代码

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

    【讨论】:

      猜你喜欢
      • 2015-11-30
      • 2016-01-02
      • 2017-10-27
      • 2021-05-27
      • 1970-01-01
      • 2013-12-09
      • 2016-09-24
      • 2014-06-07
      • 2016-08-15
      相关资源
      最近更新 更多