1. 什么是动静分离
动静分离,就是将css、js、jpg等静态资源和后端程序等动态资源分开处理,以此提高服务器响应速度,提高性能。
2. nginx如何实现动静分离
修改nginx配置文件:
upstream fzjh{
server 11.0.1.50:8080;
server 11.0.1.51:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://fzjh;
}
location ~* \.(css|js|html)$ {
root html; # 在本例中的绝对路径为 /usr/local/nginx/html
}
location ~* \.(jpg|flv|doc)$ {
root /data/source; # 这里就写成了绝对路径
}
}
在这个配置中,以(css|js|html)结尾的资源文件会到html目录下寻找。以(jpg|flv|doc)结尾的资源文件会在/data/source路径下寻找。所以我们要将这些资源类型文件提前放入对应的路径中。
在`/usr/local/nginx/html`下新建了haha文件夹,放入了一个简单的mypage.html页面。
在/data/source路径下放入了一张cat.jpg的图片。
3. 发出静态资源请求
http://11.0.1.10/haha/mypage.html
http://11.0.1.10/cat.jpg
说明:对于nginx实现动静分离,我们还可以单独部署多台nginx服务器用于保存静态资源,再加一组upstream实现负载均衡。
4. 动静分离的配置正则说明
基本语法:
location [=|~|~*|^~]/uri/{...}
=
严格匹配, 如果这个查询匹配,将停止搜索并立即处理此请求。
~
区分大小写匹配。
~*
不区分大小写匹配。
!~
区分大小写匹配。
!~*
不区分大小写匹配。
几个示例说明:
location = /{
#只匹配/查询
}
location /{
#匹配任何查询,因为所有请求都以/开头。但是正则表达式和长的块规则将被优先查询匹配
}
location ^~ /images/{
#匹配任何以/images/开头的查询并停止搜索
}
location ~*.(gif|jpg|jpeg)${
#匹配任何以gif|jpg|jpeg结尾的请求
}