【问题标题】:Nginx fails to load CSS in a particular locationNginx 无法在特定位置加载 CSS
【发布时间】:2014-09-07 12:27:10
【问题描述】:

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 中的文件未找到

为什么声明位置(在本例中为位置“django”)中的 CSS 不存在?

【问题讨论】:

    标签: django nginx server-administration


    【解决方案1】:

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

    【讨论】:

    • 它只在 Django 位置声明 CSS 块。
    猜你喜欢
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多