nginx Django - CSS文件未在生产服务器中加载(调试:错误)

sr4lhrrt  于 2022-11-02  发布在  Nginx
关注(0)|答案(2)|浏览(150)

用途:nginx、gunicorn、服务器的linode

调试=假

当我在生产中保持debug=False时,css文件不会被加载。我还构建了404.html页面。假设有人访问mydomain.com/abcd,那么他/她会得到我设计的404页面。这很好。问题是css文件没有加载。

调试真

当我在生产中保持debug=True时,css文件被加载。一切都正常。但是当有人访问www.example.com时mydomain.com/abcd,他/她会得到django defaualt错误页面。如果我在生产中保持debug=True,一切都正常,但我听说在生产中保持debug=True是不推荐的,可能会导致站点的安全问题
目前我在settings.py和nginx cofig中拥有的是:

设置.py:

DEBUG =True

ALLOWED_HOSTS = ['ip','mydomain.com','www.mydomain.com']

Nginx配置文件:

server {
    server_name mydomain.com www.mydomain.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location projectdir/static/ {
        autoindex on ;
        root /home/user/projectdir;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }

请帮我解决这个问题,因为我从过去的一个星期挣扎。目前的网站是活的,并通过保持调试=真加载CSS。但我不想有任何安全问题后。

kuarbcqp

kuarbcqp1#

在settings.py文件中:
您可以简单地添加如下代码:

DEBUG = bool(int(os.environ.get('DEBUG', 0))) #Note: 0 means false and 1 means true

尝试这种方法,并检查这是否解决了您的错误

abithluo

abithluo2#

您的www.example.com中需要配置settings.py

...
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = "/static/"

确保你已经运行了以下代码,这样django就可以找到你所有的静态文件,并把它们放在一个地方

$python manage.py collectstatic

nginx静态配置应该看起来更像

...
location /static/ {
    autoindex on;
    alias /home/user/projectdir/static/;
}

相关问题