我的网站中(以zhidao.it)为例,有两种形式的域名:
之所以会在2中使用单独的子域名来引用静态文件,主要是为了使客户端打开文件更快;而其中的$version是可变的,当我修改了css/js/image后,在配置文件中修改一下version,客户端便可以使用新的文件。
我在前端使用了nginx,通过反向代理连接到真正的服务器。在配置文件中,我只做了最基本的设置,本来一切正常,但是突然发现百度索引网站时,没有使用zhidao.it的主域名,而是通过static_xxx.zhidao.it
所以我得将nginx重新配置一下,让static_$version.zhidao.it只能访问/public下的静态文件,要访问其它内容,只能使用主域名zhidao.it。
nginx的配置中的核心内容如下:
# 设置后台服务地址
upstream zhidao.it {
server 127.0.0.1:8080;
}
# 将www.zhidao.it转到zhidao.it
server {
listen 80;
server_name www.zhidao.it;
rewrite ^/(.*) http://zhidao.it permanent;
}
# 处理static_$version.zhidao.it
server {
listen 80;
server_name ~^static_(.*)\.zhidao\.it$;
root /webs/zhidao.it;
# 检查请求的地址,是不是以/public开头,"~*"表示"不分大小写的正则"
if ( $request_uri ~* ^/public/.* ) {
set $ok '1';
}
# 如果不是,永久重定向到zhidao.it
if ($ok !~ '1') {
rewrite ^ http://zhidao.it$request_uri permanent;
}
# 否则自动去root下找对应的文件
}
# zhidao.it的处理
server {
listen 80;
server_name zhidao.it;
access_log /webs/zhidao.it.logs/access.log;
error_log /webs/zhidao.it.logs/error.log;
root /webs/zhidao.it/;
location / {
proxy_pass http://zhidao.it;
}
}