2
我遇到nginx的sub_filter
重写规则无法处理CSS文件的问题。我正在为路径(/site
)上的内容提供内容,并且需要在JS & CSS中的所有URL都正确添加前缀。通过nginx的sub_filter在CSS和JS中重写路径
我在CSS中链接时指定了MIME类型。从模板:
<link href="/static/css/site.css" type="text/css" rel="stylesheet" />
Nginx已经启用子过滤器,我已经明确规定,包括text/css
:
location /site {
access_log /opt/logs/test/nginx-access-site.log combined if=$loggable;
error_log /opt/logs/test/nginx-errors-site.log error;
rewrite ^(/site)$ $1/;
rewrite ^/site(.+) $1 break;
sub_filter "test.domain.tld" "test.domain.tld/site";
sub_filter "'/" "'/site/";
sub_filter '"/' '"/site/';
sub_filter "http:" "https:";
sub_filter_types text/html text/css text/javascript;
sub_filter_once off;
include proxy_params;
proxy_pass http://site_test$1$is_args$args;
proxy_redirect http://test.domain.tld/ https://test.domain.tld/site/;
}
的CSS文件的引用是否正确改写。从HTML输出:
<link href="/site/static/css/site.css" type="text/css" rel="stylesheet" />
的问题是它不是CSS文件中改写,所以图像路径是不正确的:
.sortable th .asc {
background-image: url("/static/img/up_arrow.gif");
}
我已经试过是没有任何的区别过于宽松:
sub_filter_types *;
我误解了使用sub_filter
?我认为,因为CSS是由nginx直接提供的,它也会被重写。