2.Nginx配置进阶(二)
Nginx相关配置===============================================================================
概述:
本篇我们将继续上一篇的话题,来介绍Nginx中http协议的相关配置,内容如下:
[*] Nginx基于rpm包的安装
[*] 定义路径相关的配置:
[*] 定义客户端请求的相关的配置
[*] 对客户端进行限制的相关配置
[*] 文件操作优化的配置
[*] ngx_http_access_module模块
[*] ngx_http_auth_basic_module模块
[*] ngx_http_stub_status_module模块
[*] ngx_http_log_module模块
[*] ngx_http_rewrite_module模块:
[*] ngx_http_gzip_module
回顾:
Nginx安装之rpm包
过程如下:
1.在Nginx官方网点下载适合的nginx rpm包到本地,这里是我下载的rpm包:
nginx-1.10.0-1.el7.ngx.x86_64.rpm
2.在当前nginx包的所在目录中执行yum install 即可
# ls
nginx-1.10.0nginx-1.10.0-1.el7.ngx.x86_64.rpmnginx-1.10.0.tar.gz
# yum install ./nginx-1.10.0-1.el7.ngx.x86_64.rpm -y
3.安装完成之后查看文件及程序所在位置
# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx # 配置文件所在位置
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf# 配置文件片段
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf # nginx主配置文件
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service # unit file 文件,使用nginx.service启动即可
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx # 主程序文件
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.10.0
/usr/share/doc/nginx-1.10.0/COPYRIGHT
/usr/share/nginx # 默认root的指向位置
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html # 默认提供的网页文件
/var/cache/nginx
/var/log/nginx
我们用rpm包安装的nginx的主配置文件和编译安装的主配置文件中的定义使用的区别,如下:
# pwd
/etc/nginx
# ls
conf.dfastcgi_paramskoi-utfkoi-winmime.typesmodulesnginx.conf scgi_paramsuwsgi_paramswin-utf
# mv nginx.conf{,.bak} # 同样先对主配置文件做备份
# 查看主配置文件,如下:
# catnginx.conf
usernginx;
worker_processes1;
error_log/var/log/nginx/error.log warn; # 主配置段
pid /var/run/nginx.pid;
events {
worker_connections1024;
}
# 如下为http配置段
http {
include /etc/nginx/mime.types;
default_typeapplication/octet-stream;
log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log/var/log/nginx/access.logmain;
sendfile on;
#tcp_nopush on;
keepalive_timeout65;
#gzipon;
include /etc/nginx/conf.d/*.conf;
}
# 由上可见这里只是定义了一些server的公共配置,没有定义server虚拟主机,而是定义在了/etc/nginx/conf.d/*.conf下
Nginx中http协议的相关配置
2.定义路径相关的配置:
★root path;
[*] 设置web资源路径映射;用于指明用户请求的url所对应的本地文件系统上的文档所在目录路径;
[*] 使用位置:http, server, location, if in location;
★location
⊙使用格式:
[*] location [ = | ~ | ~* | ^~ ] uri { ... }
[*] location @name { ... }
⊙功能:
[*] 在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;
[*] ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置;
⊙定义的路径映射
⊙匹配的定义和优先级
★alias path
[*] 定义路径别名,文档映射的另一种机制;
[*] 仅能用于location上下文;
注意:
location中使用root指令和alias指令的意义不同;
[*] root,给定的路径对应于location中的/uri/左侧的 /;
[*] alias,给定的路径对应于location中的/uri/右侧的 /;
★index file ...;
[*] 定义默认资源;
[*] 定义的位置:http, server, location;
★error_page code ... [=] uri;
[*] Defines the URI that will be shown for the specified errors. A uri value can contain variables.(Defines URI,它将显示指定的错误。一个uri的值可以包含变量。)
[*] 可以自定义响应码
演示:
1.location和alias
由上面可知,我们在http的配置段中要想编辑定义虚拟主机server,要在/etc/nginx/conf.d中定义,如下:
# cd conf.d/
# ls
default.conf
# cp default.conf{,.bak} # 做备份
# vim default.conf # 编辑配置文件如下:
1 server { # 可见http的虚拟主机server都定义在此文件下
2 listen 80;
3 server_namelocalhost;
4
5 #charset koi8-r;
6 #access_log/var/log/nginx/log/host.access.logmain;
7
8 location / { # 这里没有把root定义在server中,而是把根 / 映射到 location中的/usr/share/nginx/html下
9 root /usr/share/nginx/html;
10 indexindex.html index.htm;
11 }
12
13 #error_page404 /404.html;
14
15 # redirect server error pages to the static page /50x.html
16 #
17 error_page 500 502 503 504/50x.html;
18 location = /50x.html {
19 root /usr/share/nginx/html;
20 } # 表示做精确匹配
21
22 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
23 #
24 #location ~ \.php$ {
25 # proxy_pass http://127.0.0.1;
26 #} # 表示做正则表达式模式匹配
27
28 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
29 #
30 #location ~ \.php$ {
31 # root html;
32 # fastcgi_pass 127.0.0.1:9000;
33 # fastcgi_indexindex.php;
34 # fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
35 # include fastcgi_params;
36 #}
37
38 # deny access to .htaccess files, if Apache's document root
39 # concurs with nginx's one
40 #
41 #location ~ /\.ht {
42 # denyall;
43 #}
44 }
1.由上面的配置文件中可知,用rpm包安装的nginx中,http配置段中虚拟主机server的根并没有直接定义在server的公共配置段中,而是定义在了location的上下文中,表示把根映射到/usr/share/nginx/html/下;
所以如果我们要在浏览器中访问 http://10.1.252.161/admin 则对应的文件系统映射路径为 /usr/share/nginx/html/admin,试验如下:
# 在映射的根目录下创建目录admin,并提供默认页面
# mkdir /usr/share/nginx/html/admin
# echo "taotaoxiuxiu" > /usr/share/nginx/html/admin/index.html
# cat /usr/share/nginx/html/admin/index.html
taotaoxiuxiu
浏览器访问如下:
2.假如我们要单独对admin目录做访问控制,也可以重新定义admin的目录映射关系,例如,这里我们把admin目录映射到/vnhosts/www1/data下
保存退出后,检测语法重载nginx再次访问发现找不到该资源,如下:
如上,可见我们单独对admin做路径定义后,原来admin的路径就不对了,所以,我们要在新定义的路径下再次创建admin目录才可以,如下:
# mkdir -pv /vnhosts/www1/data/admin
mkdir: created directory ‘/vnhosts/www1’
mkdir: created directory ‘/vnhosts/www1/data’
mkdir: created directory ‘/vnhosts/www1/data/admin’
# cp /usr/share/nginx/html/admin/index.html /vnhosts/www1/data/admin
再次刷新网页,可以正常访问,如下:
3.如果我们把admin在location中新定义的路径 root /vnhosts/www1/data 改为 alias /vnhosts/www1/data 会是怎样的效果呢,如下:
# 为了对比效果,我们在/vnhosts/www1/data目录下再创建一个默认页面,内容不同admin中的默认页面
# pwd
/vnhosts/www1/data
# echo "/vnhost/www1/data" > index.html
# ls
adminindex.html
再次访问如下:
==============================================================================
总结:
在location上下文中
1.定义 alias /vnhosts/www1/data/ 为目录admin的路径别名,映射的是/admin/最右侧的/;
即: http://10.1.252.161/admin ---> /vnhosts/www1/data
2.定义 root /vnhosts/www1/data/ 是/vnhosts/www1/data/最右侧根与/admin 最左侧根的映射,表示在data目录下还有一个目录为admin,而且必须要有,才能在浏览器中访问到admin。
即: http://10.1.252.161/admin---> /vnhosts/www1/data/admin
一定要注意映射关系,不要搞混了!!!
==============================================================================
演示:
2.自定义错误页面:
1)首先编辑配置文件,自己定义一个404的错误页面,并定义文件映射的位置
2)创建此文件,并编辑错误页面信息
# ls /usr/share/nginx/html/
50x.htmladminindex.html
# mkdir /usr/share/nginx/html/error_pages
# vim /usr/share/nginx/html/error_pages/404.html
1 -----------------------------Not Found----------------------------------
2 Power By taotao
3)检查语法错误,重载后访问页面如下:
4)如上,调试页面显示为404错误,我们也可以改变状态码,让客户端以位访问的就是正确的资源
保存,重载后再次刷新页面如下:
3.定义客户端请求的相关的配置:
★keepalive_timeout timeout ;
[*] 设定保持连接的超时时长,0表示禁止长连接;默认为75s;
★keepalive_requests number;
[*] 在一次长连接上所允许请求的资源的最大数量,默认为100;
★keepalive_disable none | browser ...;
[*] 对哪种浏览器禁用长连接;
★send_timeout time;
[*] 向客户端发送响应报文的超时时长,此处,是指两次写操作之间的间隔时长;
★client_body_buffer_size>
[*] 用于接收客户端请求报文的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由client_body_temp_path指令所定义的位置;
★client_body_temp_path path ]];
[*] 设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量;
[*] level为16进制的数字;
举例:
[*] client_body_temp_path path/var/tmp/client_body1 2 2 表示:有16个一级子目录,一级子目录下有256(16*16)个二级子目录;每个二级子目录下又有256个三级子目录
4.对客户端进行限制的相关配置:
★limit_rate rate;
[*] 限制响应给客户端的传输速率,单位是bytes/second,0表示无限制;
★limit_except method ... { ... }
[*] 限制对指定的请求方法之外的其它方法允许使用的客户端;
示例:
limit_except GET { 表示除了GET的请求方法之外的其他方法,仅允许192.168.1.0/32;可以使用,其他用户都拒绝
allow 192.168.1.0/32;
denyall;
}
5.文件操作优化的配置
★aio on | off | threads[=pool];(aio表示异步I/O模型);
[*] 是否启用aio功能;建议开启
★directio>
[*] 在Linux主机启用O_DIRECT标记,此处意味文件大于等于给定的大小时使用;例如directio 4m;
★open_file_cache off;
open_file_cache max=N ;
⊙nginx可以缓存以下三种信息:
[*] 文件的描述符、文件大小和最近一次的修改时间;
[*] 打开的目录结构;
[*] 没有找到的或者没有权限访问的文件的相关信息;
⊙max=N:
[*] 可缓存的缓存项上限;达到上限后会使用LRU算法(最近最少使用)实现缓存管理,删除最近最少使用的元素;
⊙inactive=time:
[*] 缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_users指令所指定的次数的缓存项即为非活动项;
★open_file_cache_valid time;
[*] 缓存项有效性的检查频率;默认为60s;
★open_file_cache_min_uses number;
[*] 在open_file_cache指令的inactive参数指定的时长内,至少应该被命中多少次方可被归类为活动项;
★open_file_cache_errors on | off;
[*] 是否缓存查找时发生错误的文件一类的信息;
演示:
Example:
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
6.ngx_http_access_module模块:
★作用:实现基于ip的访问控制功能
[*] allow address | CIDR | unix: | all;
[*] deny address | CIDR | unix: | all;
★可用上下文:
[*] http, server, location, limit_except
演示:
Example Configuration
location / {
deny192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
denyall;
}
7.ngx_http_auth_basic_module模块
★作用:实现基于用户的访问控制,使用basic机制进行用户认证;
[*] auth_basic string | off;
[*] auth_basic_user_file file;
示例:
location / {
auth_basic "closed site";
auth_basic_user_file conf/htpasswd;
}
注意:
[*] htpasswd命令由httpd-tools所提供;
演示:
1.编辑配置文件/etc/nainx/conf.d/default.conf,定义访问控制的字符串和用户文件
2.创建/etc/nginx/.ngxpasswd文件,并添加用户
# nginx -t # 检查语法
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# htpasswd -c -m /etc/nginx/.ngxpasswd tao# 生成文件,并添加用户
New password:
Re-type new password:
Adding password for user tao
# htpasswd-m /etc/nginx/.ngxpasswd xiu# 添加用户xiu,只有第一次生成文件才有-c
New password:
Re-type new password:
Adding password for user xiu
# cat .ngxpasswd
tao:$apr1$0QwNyHsf$LS/IM1V.zfU2WXs04VpTL0
xiu:$apr1$FiWRRC7M$s1jBBlqJJXfALkmFiPt3c/
# nginx -s reload # 重载
访问如下:
8.ngx_http_stub_status_module模块
★作用:
[*] 用于输出nginx的基本状态信息;
★stub_status;
示例:
location/basic_status {
stub_status;
}
★输出的状态信息:
[*] Active connections: 活动状态的连接数;
[*] accepts:已经接受的客户端请求的总数;
[*] handled:已经处理完成的客户端请求的总数;
[*] requests:客户端发来的总的请求数;
[*] Reading:处于读取客户端请求报文首部的连接的连接数;
[*] Writing:处于向客户端发送响应报文过程中的连接数
[*] Waiting:处于等待客户端发出请求的空闲连接数;
演示:
Example Configuration
location /basic_status {
stub_status;
}
# This configuration creates a simple web page with basic status data which may look like as follows:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
刷新网页如下:
9.ngx_http_log_module模块
★作用:
[*] 管理访问日志(已指定的格式来记录用户的访问请求)
★日志格式的定义:
[*] log_format name string ...;
string可以使用nginx核心模块及其它模块内嵌的变量;
★访问日志文件路径,格式及相关的缓冲的配置;
[*] access_log path ] ];
[*] access_log off;
[*] buffer=size 缓冲大小
[*] flush=time刷写时长(即多长时间把缓存中的日志写到磁盘)
★缓存各日志文件相关的元数据信息;
[*] open_log_file_cache max=N ;
[*] open_log_file_cache off;
[*] max:缓存的最大文件描述符数量;
[*] min_users:在inactive指定的时长内访问大于等于此值方可被当作活动项;
[*] inactive:非活动时长;
[*] valid:验正缓存中各缓存项是否为活动项的时间间隔;
nginx中定义的访问日志路径和格式如下:在/etc/nginx/nginx.conf中
10.ngx_http_rewrite_module模块:(重要)
★作用:
[*] 将用户请求的URI基于regex(正则表达式)所描述的模式进行检查,而后完成替换;
示例:
Example:
server {
...
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ralast;
return403;
...
}
★rewrite regex replacement
⊙作用:
[*] 用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI;
注意:
[*] 如果在同一级别配置块中存在多个rewrite规则,那么会自上而下逐个检查;被某条件规则替换完成后,会重启新一轮的替换检查,因此,隐含有循环机制;所表示的标志位用于控制此循环机制;
[*] 如果replacement是以http://或https://开头,则替换结果会直接以重定向返回给客户端; 301:永久重定向;
⊙:
◆last:
[*] 重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环;
◆break:
[*] 重写完成后停止对当前URI在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环;
◆redirect:
[*] 重写完成后以临时重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;不能以http://或https://开头;
◆permanent:
[*] 重写完成后以永久重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;
★return
⊙作用:
[*] 停止处理并返回指定的代码到客户端。
⊙格式:
[*] return code ;
[*] return code URL;
[*] return URL;
★rewrite_log on | off;
[*] 作用:是否开启重写日志;
★if (condition) { ... }
⊙作用:
[*] 引入一个新的配置上下文 ;条件满足时,执行配置块中的配置指令;
⊙可用位置:server, location;
⊙测试条件: condition:
◆比较操作符:
[*] ==:等值比较;
[*] !=:不等值比较;
[*] ~:模式匹配,区分字符大小写;
[*] ~*:模式匹配,不区分字符大小写;
[*] !~:模式不匹配,区分字符大小写;
[*] !~*:模式不匹配,不区分字符大小写;
◆文件及目录存在性判断:
[*] -e, !-e :文件存在和不存在;
[*] -f, !-f :文件存在且为普通文件
[*] -d, !-d :存在且为目录
[*] -x, !-x :存在可执行
示例:
Examples:
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
set $id $1;
}
if ($request_method = POST) {
return 405;
}
if ($slow) {
limit_rate 10k;
}
if ($invalid_referer) {
return 403;
}
★set $variable value;
[*] 作用:用户自定义变量 ;
演示:
假如之前有个uri为bbs的目录,后来由于种种原因,需要把这个目录更换名称,这样一来,对原来老的用户来说再访问bbs势必就找不到了,所以,这里我们就需要用到URI的重定向,如下:
1.现在我新创建一个forum的目录,并创建默认测试页面,比作原来的bbs目录
# cd /usr/share/nginx/html/
# ls
50x.htmladminerror_pagesindex.html
# mkdir forum
# ls
50x.htmladminerror_pagesforumindex.html
# catforum/index.html
> BBS Home Page
> eof
# cat forum/index.html
BBS Home Page
2.对于新增加的用户来说,可以使用新的目录名访问资源,如下:
但是我们的网站之前不叫forum而叫bbs,所以,对于老用户来说,并不知道新的路径,是访问不到所需的资源的,如下:
3.为了使老用户不受影响,就需要uri重定向了,如下,编辑/etc/nginx/conf.d/default.conf
语法检测,重载后再次访问bbs,可以正常访问,如下:
如上,实际上就是一个查找并替换而已,只不过查找的是用户在某一次请求的url当中的字符串是否能够被我们所指定的正则表达式模式所匹配,如果能就替换成新的uri(replacement的值)。
1.但是如果我们有多个rewrite的话,替换成为的结果会重启一轮再次被检查,而后有可能会被替换到别的位置,
再次访问bbs,则重定向到了admin目录下(这里的admin又为路径别名)
访问forum也会重定向到admin目录下:
如上,访问bbs为两次检查匹配,然后两次重定向,访问forum仅一次重定向,这样一来forum就没有意义了。
3.还有可能有一种情况就是死循环,另个uri在不停地替换,如下定义:
访问bbs或者forum,提示500,服务器错误
4.如上,出现这种情况我们就需要让他们跳出循环,这里就要用到flag的break。
为了演示效果,我重新定义了一下,这两个目录,如下:
# mv forum/ bbs
# mkdir forum
# catforum/index.html
> Forum Home Pages
> eof
# cat forum/index.html bbs/index.html
Forum Home Pages
BBS Home Page
然后编辑配置文件
访问bbs和forum如下:
5.我们也可以跟上以http://或https://开头;实现跨站跳转,如下:
访问forum,跳转到了百度,这里默认是实现的是last如下:
6.redirect效果演示
1)不添加redirect访问,响应码为200,是服务器自己的内部事务,客户端不参与
2)添加redirect,服务会把临时临时重定向的结果返回给客户端浏览器,由客户端再次发起请求,所以响应码为302--->200访问效果如下:
3)添加permanent,为永久重定向
10.ngx_http_gzip_module:必须要启用的模块
★作用:
[*] ngx_http_gzip_module模块是一个过滤器,压缩响应使用"gzip"方法。这通常有助于减少传输数据的大小,可压缩一半甚至更多。
⊙gzip on | off;
[*] Enables or disables gzipping of responses.
⊙gzip_comp_level level;
[*] Sets a gzip compression level of a response. Acceptable values are in the range from 1 to 9.(响应的压缩级别。可接受的值范围为从1到9)。
⊙gzip_disable regex ...;
[*] Disables gzipping of responses for requests with “User-Agent” header fields matching any of the specified regular expressions.(基于正则表达式匹配浏览器,匹配到的将禁用压缩功能)
⊙gzip_min_length length;
[*] 启用压缩功能的响应报文大小阈值;
⊙gzip_buffers number>
[*] 支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小;
⊙gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
[*] nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的;
[*] off:对代理的请求不启用
[*] no-cache, no-store,private:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能
⊙gzip_types mime-type ...;
[*] 压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;
⊙gzip_vary on|off
[*] 对gzip, gzip_static,或者 gunzip 压缩的,添加响应报文首部,Vary: Accept-Encoding
演示:
1.编辑配置文件/etc/nginx/nginx.conf在http的公共配置段启用压缩功能,并设置相关内容,如下:
# vim /etc/nginx/nginx.conf
gzipon;
gzip_comp_level 7;
#gzip_disable .*MSIE.*;
gzip_types text/html,text/css,text/xml,text/plain;
gzip_min_length 1K;
gzip_vary on;
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# nginx -s reload
2.复制一个文件,做测试
# cp /var/log/messages /usr/share/nginx/html/messages.html
# ll /usr/share/nginx/html/messages.html
-rw------- 1 root root 1364151 Oct 27 18:04 /usr/share/nginx/html/messages.html
# chmod +r /usr/share/nginx/html/messages.html# 给一个读权限
# ll /usr/share/nginx/html/messages.html
-rw-r--r-- 1 root root 1364151 Oct 27 18:04 /usr/share/nginx/html/messages.html
# 使用curl测试如下
# curl -I http://10.1.252.161/messages.html
HTTP/1.1 200 OK
Server: nginx/1.10.0
Date: Thu, 27 Oct 2016 10:09:51 GMT
Content-Type: text/html
Content-Length: 1364151
Last-Modified: Thu, 27 Oct 2016 10:04:31 GMT
Connection: keep-alive
Vary: Accept-Encoding# 可以压缩
ETag: "5811d12f-14d0b7"
Accept-Ranges: bytes
# curl --compress -I http://10.1.252.161/messages.html
HTTP/1.1 200 OK
Server: nginx/1.10.0
Date: Thu, 27 Oct 2016 10:09:57 GMT
Content-Type: text/html
Last-Modified: Thu, 27 Oct 2016 10:04:31 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: W/"5811d12f-14d0b7"
Content-Encoding: gzip# gzip压缩
我们在Chrome(谷歌)浏览器中访问如下:
如果我们想禁止某个浏览器的访问只需添加gzip_disable name 即可,如下:
# vim /etc/nginx/nginx.conf
gzipon;
gzip_comp_level 7;
#gzip_disable Chrome; # 禁止谷歌浏览器请求的压缩
gzip_types text/html,text/css,text/xml,text/plain;
gzip_min_length 1K;
gzip_vary on;
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# nginx -s reload
用谷歌再次访问如下:
页:
[1]