目录
-
ngx_http_rewrite_module模块
-
ngx_http_gzip_module模块
-
ngx_http_fastcgi_module模块
-
ngx_http_ssl_module模块
-
ngx_http_referer_module模块
ngx_http_rewrite_module模块
将用户某一次请求的URI当中的字符串是不是能够被我们给出的regex所描述的模式所匹配,如果能,则替换为新的URL
1、rewrite
语法格式:rewrite regex replacement [flag]
Default: —
Context: server, location, if将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI;
注意:如果在同一级配置块中存在多个rewrite规则,那么会自上而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查,因此,隐含有循环机制;[flag]所表示的标志位用于控制此循环机制;
如果replacement是以http://或https://的绝对路径开头,则替换结果会直接以重定向返回给客户端;[flag]:
last:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环;break:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环;
redirect:重写完成后以临时重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;不能以http://或https://开头;
permanent:重写完成后以永久重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;
2、return
语法:return code [text];
return code URL;
return URL;
Default: —
Context: server, location, if停止处理并将指定的代码返回给客户端
3、rewrite_log
语法:rewrite_log on | off;
Default: rewrite_log off;
Context: http, server, location, if是否开启重写日志
4、if
语法:if (condition) { … }
Default: —
Context: server, location引入一个新的配置上下文 ;条件满足时,执行配置块中的配置指令;server, location;
condition:
比较操作符:
==
!=
~:模式匹配,区分字符大小写;
~*:模式匹配,不区分字符大小写;
!~:模式不匹配,区分字符大小写;
!~*:模式不匹配,不区分字符大小写;文件及目录存在性判断:
-e, !-e
-f, !-f
-d, !-d
-x, !-x
5、set
语法:set $variable value;
Default: —
Context: server, location, if用户自定义变量
6、break
语法:Syntax: break;
Default: —
Context: server, location, if停止处理当前ngx_http_rewrite_module指令集。
简单示例
ngx_http_gzip_module模块
ngx_http_gzip_module模块是一个过滤器,压缩响应使用“gzip”方法。这往往有助于减少一半或更多的传输数据的大小。
1、gzip
语法:gzip on | off;
Default: gzip off;
Context: http, server, location, if in location是否开启gzip功能
2、gzip_comp_level
语法:gzip_comp_level level;
Default: gzip_comp_level 1;
Context: http, server, location指定压缩比,1-9
3、gzip_disable
语法:gzip_disable regex …;
Default: —
Context: http, server, location对被指定的模式所匹配到的浏览器禁用gzip功能
4、gzip_min_length
语法:gzip_min_length length;
Default: gzip_min_length 20;
Context: http, server, location启用压缩功能的响应报文最小长度
5、gzip_buffers
语法:gzip_buffers number size;
Default: gzip_buffers 32 4k|16 8k;
Context: http, server, location支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小;
6、gzip_proxied
语法:gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …;
Default: gzip_proxied off;
Context: http, server, locationnginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的;
off:对代理的请求不启用
no-cache, no-store,private:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能;
7、gzip_types
语法:gzip_types mime-type …;
Default: gzip_types text/html;
Context: http, server, location压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;
8、gzip_vary
语法:gzip_vary on | off;
Default: gzip_vary off;
Context: http, server, location如果启用了gzip功能是否在响应报文首部添加Vary: Accept-Encoding项
配置示例
ngx_http_fastcgi_module模块
ngx_http_fastcgi_module模块允许通过请求FastCGI服务器,将动态页面发送至FastCGI服务器解释执行
1、fastcgi_pass
语法:fastcgi_pass address;
Default: —
Context: location, if in locationfastcgi服务器IP地址
2、fastcgi_index
语法:fastcgi_index name;
Default: —
Context: http, server, locationfastcgi默认的主页资源;
3、fastcgi_param
语法:fastcgi_param parameter value [if_not_empty];
Default: —
Context: http, server, location设置一个参数,将此参数传递给FastCGI服务器。该值可以包含文本、变量和它们的组合。
配置php-fpm示例
1.安装php-fpm和mysql
[root@centos7 ~]# yum -y install php-fpm mariadb-server
2.Nginx配置文件
3.测试访问
4、fastcgi_cache_path
语法:fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Context: http定义fastcgi的缓存;缓存位置为磁盘上的文件系统,由path所指定路径来定义;
levels=levels:缓存目录的层级数量,以及每一级的目录数量;levels=ONE:TWO:THREE
leves=1:2:2
keys_zone=name:size
k/v映射的内存空间的名称及大小
inactive=time
非活动时长
max_size=size
磁盘上用于缓存数据的缓存空间上限
5、fastcgi_cache
语法:fastcgi_cache zone | off;
Default: fastcgi_cache off;
Context: http, server, location调用指定的缓存空间来缓存数据;http, server, location
6、fastcgi_cache_key
语法:fastcgi_cache_key string;
Default: —
Context: http, server, location定义用作缓存项的key的字符串;
7、fastcgi_cache_methods
语法:fastcgi_cache_methods GET | HEAD | POST …;
Default: fastcgi_cache_methods GET HEAD;
Context: http, server, location为哪些请求方法使用缓存;
8、fastcgi_cache_min_uses
语法:astcgi_cache_min_uses number;
Default: fastcgi_cache_min_uses 1;
Context: http, server, location缓存空间中的缓存项在inactive定义的非活动时间内至少要被访问到此处所指定的次数方可被认作活动项;
9、fastcgi_cache_valid
语法:fastcgi_cache_valid [code …] time;
Default: —
Context: http, server, location不同的响应码各自的缓存时长;
10、fastcgi_keep_conn
语法:fastcgi_keep_conn on | off;
Default: fastcgi_keep_conn off;
Context: http, server, location默认情况下,一个FastCGI服务器将发送响应后关闭连接正确。然而,当这个指令设置的值,Nginx会指示一个FastCGI服务器保持连接打开。
fastcgi_cache配置示例
1.Nginx配置文件
2.启用缓存功能前做压测
3.启用缓存功能后做压缩
4.生成缓存文件
ngx_http_ssl_module模块
ngx_http_ssl_module模块提供HTTPS功能支持
1、ssl
语法:ssl on | off;
Default: ssl off;
Context: http, server是否开启ssl功能
2、ssl_certificate
语法:ssl_certificate file;
Default: —
Context: http, server当前虚拟主机使用PEM格式的证书文件;
3、ssl_certificate_key
语法:ssl_certificate_key file;
Default: —
Context: http, server当前虚拟主机上与其证书匹配的私钥文件;
4、ssl_protocols
语法:ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
Default: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context: http, server支持ssl协议版本,默认为后三个;
5、ssl_session_cache
语法:ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
Default: ssl_session_cache none;
Context: http, serverbuiltin[:size]:使用OpenSSL内建的缓存,此缓存为每worker进程私有;
[shared:name:size]:在各worker之间使用一个共享的缓存;
6、ssl_session_timeout
语法:ssl_session_timeout time;
Default: ssl_session_timeout 5m;
Context: http, server客户端一侧的连接可以复用ssl session cache中缓存 的ssl参数的有效时长;
ssl配置示例
1.CA配置
2.nginx端生成签署请求
3.CA签证
4.Nginx配置文件
5.测试
ngx_http_referer_module模块
ngx_http_referer_module模块是用来阻止访问一个在referer头域值无效请求的网站。
1、valid_referers
语法:valid_referers none | blocked | server_names | string …;
Default: —
Context: server, location定义referer首部的合法可用值;
none:请求报文首部没有referer首部;
blocked:请求报文的referer首部没有值;
server_names:参数,其可以有值作为主机名或主机名模式;
arbitrary_string:直接字符串,但可使用*作通配符;
regular expression:被指定的正则表达式模式匹配到的字符串;要使用~打头,例如 ~.*.magedu.com;
配置示例
valid_referers none block server_names *.magedu.com *.mageedu.com magedu.* mageedu.* ~\.magedu\.;
if($invalid_referer) {
return 403;
}
原创文章,作者:zhai796898,如若转载,请注明出处:http://www.178linux.com/57665