Nginx无法在特定位置加载CSS

时间:2014-09-07 12:27:11

标签: django nginx server-administration

d

我想在我的网站上使用缓存作为CSS文件,我有这样的配置:

server {

   root /webapps/sitoweb;
   listen 443;
   ssl on;
   ssl_certificate /etc/nginx/ssl/bundle.crt;
   ssl_certificate_key /etc/nginx/ssl/privateKey.key;
   ssl_ciphers  HIGH:!aNULL:!MD5:!DSS:!RC4;
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 10m;
   ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
   server_name mysite.com;
   access_log of;

   location /django/ {
      proxy_pass http://127.0.0.1:8001;
      proxy_set_header X-Forwarded-Host $server_name;
      proxy_set_header X-Real-IP $remote_addr;
      add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
   }

}

现在情况是(不使用缓存):

文件在www.mysite.com/homeCSS.css 找到

文件在www.mysite.com/django/djangoCSS.css 发现

我修改了Nging添加了这个:

   location ~* \.(css|js|gif|jpe?g|png)$ {
      expires 168h;
      add_header Pragma public;
      add_header Cache-Control "public, must-revalidate, proxy-revalidate";
   }

现在的情况是(使用缓存):

文件在www.mysite.com/homeCSS.css 找到

www.mysite.com/django/djangoCSS.css中的文件未找到

为什么CSS在声明的位置(位置" django"在这种情况下)不是foud?

1 个答案:

答案 0 :(得分:0)

找不到该位置,因为正则表达式优先于标准匹配。这意味着您将.css转换为本地请求而不是代理请求,因此它将在配置的根目录中查找该CSS文件。 解决方案是在Django位置下面重复该块,而是使用proxy_set_header和到期的等价物。但是让后端发送正确的标题可能会更好。