一尘不染

django:通过nginx提供静态文件

django

我正在为Django使用apache + mod_wsgi。
并且所有css / js / images都通过提供nginx
出于某种奇怪的原因,当其他人/朋友/同事尝试访问该网站时,jquery / css不会为他们加载,因此页面看上去很混乱。

我的html文件使用这样的代码-

<link rel="stylesheet" type="text/css" href="http://x.x.x.x:8000/css/custom.css"/>
<script type="text/javascript" src="http://1x.x.x.x:8000/js/custom.js"></script>

我的nginx配置sites-available是这样的

    server {   
         listen   8000;   
         server_name  localhost;

         access_log  /var/log/nginx/aa8000.access.log;    
         error_log  /var/log/nginx/aa8000.error.log;    

           location / {   
               index  index.html index.htm;    
           }    

         location /static/ {    
            autoindex on;    
            root   /opt/aa/webroot/;    
         }    
     }   

有一个目录/opt/aa/webroot/static/,其中有相应的cssjs目录。

奇怪的是,当我访问它们时页面显示正常。
我已经清除了我的缓存/等,但是该页面对我来说可以从各种浏览器加载正常。

另外,我在Nginx日志文件中看不到404任何错误。


阅读 597

收藏
2020-04-02

共2个答案

一尘不染

  1. server_name必须与link/ scriptURL 中的主机名匹配。将此接口声明为默认配置:端口对(listen 8000 default
  2. Nginx必须在绑定主机IP的接口上侦听(对于你的情况似乎可以)
2020-04-02
一尘不染

我认为root在位置块中使用是不正确的。我使用alias它,即使没有重新配置django,它也能正常工作。

# django settings.py
MEDIA_URL = '/static/'

# nginx server config
server {   
    ...
    location /static {    
        autoindex on;    
        alias /opt/aa/webroot/;    
    }
}

希望这会使事情变得简单。

2020-04-02