Nginx静态资源部署
- 1、Nginx静态资源的配置指令
- 2、Nginx 静态资源优化配置
- 3、Nginx静态资源压缩实例
-
- 3.1 Gzip模块配置指令
-
- 3.1.1.gzip 指令:该指令用于开启或者关闭gzip功能
- 3.1.2.gzip_types指令:该指令可以根据响应页的MIME类型选择性地开启Gzip压缩功能
- 3. 1.3 gzip_comp_level 指令:该指令用于设置Gzip 压缩程度,级别从1-9,1表示程度最低,但是效率最高,9刚好相反,压缩程度最高,但是效率最低最费时间。
- 3.1.4. gzip_vary指令:该指令用于设置使用Gzip进行压缩发送是否携带 'Vary:Accept-Encoding' 头域的响应头部。主要是告诉接收方,所发送的数据经过了Gzip压缩处理
- 3.1.5. gzip_disable 指令:针对不同种类客户端发起的请求,可以选择性地开起和关闭Gzip功能。
- 3.1.6 gzip_http_version 指令:针对不同的HTTP协议版本,可以选择性地开启和关闭Gzip功能
- 3.1.7 gzip_min_length指令:该指令针对传输数据的大小,可以选择性地开启和关闭Gzip功能
- 3.1.8 gzip_proxied 指令:该指令设置是否对服务端返回的结果进行Gzip压缩。
- 3.2 Gzip 压缩功能的实例配置
- 3.3 Gzip 和 sendfile 共存问题
Nginx静态资源概述
上网去搜索访问资源对于我们来说并不陌生,通过浏览器发送一个HTTP请求实现从客户端发送请求到服务器端获取所需要的内容后并把内容回显展示在页面的一个过程。这个时候,我们请求的内容就分为两种类型,以类型是静态资源,一类是动态资源。静态资源即指在服务器端真实存在并且能直接拿来展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。
动态资源即指在服务器端真实存在但是要想获取需要经过一定的业务逻辑处理,根据不同的条件展示在页面不同的结果,比如说报表展示等
Nginx处理静态资源的内容,我们需要考虑下面这个几个问题
(1)静态资源的配置指令
(2)静态资源的配置优化
(3)静态资源的压缩配置指令
(4)静态资源的缓存处理
(5)静态资源的访问控制,包括跨域问题和防盗链问题
1、Nginx静态资源的配置指令
1.1 listen指令
listen:用来配置监听端口
语法 listen address[:port][default_server];
listen port[default server];
默认值 listen *:80 | *:8000
位置 server
listen的设置比较灵活,我们通过几个例子来把常用的设置方式熟悉下:
listen 127.0.0.1:8000;// listen localhost:8000 监听指定的IP和端口
listen 127.0.0.1; 监听指定IP的所有端口
listen 8000; 监听指定端口上的连接
listen *:8000;监听指定端口上的连接
1.2 default_server
default_server属性是标识符,用来将此虚拟主机设置成默认主机。所谓的默认主机指的是如果没有匹配到对应的address:port,则会默认执行的。如果不指定,默认使用的是第一个server。
server {
listen 8080;
server name 127.0.0.1;
如果访问的ip在 server中匹配不到比如192.168.24.62 (跟127.0.0.1不是等同的) ,则会默认找第一个sever
访问结果:
可以看到,用的是第一个sever
如果在listen 后面加上 default_server时,访问的ip 跟server都不匹配时,则会用 default_server
1.3 server_name 指令
server_name: 用来设置虚拟主机服务名称
127.0.0.1、localhost、域名[www.baidu.com | www.jd.com]
语法 server_name name1 name2....;name 可以提供多个,中间用空格分隔
默认值 server_name '';
位置 server
关于server_name的配置方式有三种,分别是:
精确配置
通配符匹配
正则表达式匹配
1.3.1 精确匹配
如:
server {
listen 80;
server_name www.itcast.cn www.itheima.cn;
..
}
补充小知识点:
hosts是一没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联'数据库',当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DSN域名解析服务器进行IP地址的解析
修改 /etc/hosts文件的配置
因为域名是要收取一定费用的,所以我们可以使用修改hosts文件来制作一些虚拟域名来使用。需要修改/etc/hosts 文件添加
我们ping www.itcast.cn
可以看到对应的网址是 127.0.0.1
这种办法配置域名时,通常不实用。因为在浏览器访问时,通常我们只能先从本机hosts文件中去找,找不到再去DSN网站解析。当我们在本服务器的浏览器上访问该网址时,可以先找该hosts文件。当在别的电脑上访问该服务器时,不会去解析服务器的hosts文件的。
1.3.2 配置方式二:使用通配符配置
server_name中支持通配符’*',但是需要注意的是通配符不出现在域名的中间,只能出现在段首 或段尾
server {
listen 80;
server_name *.itcast.cn www.itheima.*;
...
}
下面的配置就会报错
server {
listen 80;
server_name www.*.cn www.itheima.cn
}
1.3.3 配置方式三:使用正则表达式配置
server_name 中可以使用正则表达式,并且使用 ~ 作为正则表达式字符串的开始标记。
常见的正则表达式
配置如下:
server {
listen 8
server_name ~^www\.(\w+)\.com$;
default_type text/plain;
return 200 $1;
}
注意 ~后面不能加空格,加括号可以取值
$1 表示取第一个括号值,$2 表示第二个括号值
1.3.4 server_name匹配执行顺序
由于server_name 指令支持通配符和正则表达式,因次在包含多个虚拟主机的配置文件中,可能会出现一个名称被多个虚拟主机的server_name匹配成功,当遇到这种情况,当前的请求交给谁来处理呢?
server {
listen 80;
server_name ~^www\.\w+\.com$;
return 200 'regex_success';
}
server {
listen 80;
server_name www.itheima.*;
return 200 'wilcard_after_success'
}
server {
listen 80;
server_name *.itheima.com
return 200 'wilcard_before_success'
}
server {
listen 80;
server_name www.itheima.com;
return 200 'exact_success'
}
server {
listen 80 default_server;
server_name _;
return 4