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