Nginx详解以及LNMP的搭建(4)

四、重要常用的配置 4.1 权限控制

ngx_http_access_module 模块 ,实现基于ip 的访问控制功能

① allow address | CIDR | unix: | all;

② deny address | CIDR | unix: | all;

http, server, location, limit_except 段,都能使用

自上而下检查,一旦匹配,将生效,条件严格的置前

示例:

location / {

deny 192.168.1.1;

allow 192.168.1.0/24;

allow 10.1.1.0/16;

allow 2001:0db8::/32;

deny all;

}

4.2 身份验证

ngx_http_auth_basic_module 模块,实现基于用户的访问控制,使用basic 机制进行用户认证

① auth_basic string | off;

② auth_basic_user_file file;

location /admin/ {

auth_basic "Admin Area";  “提示字”

auth_basic_user_file /etc/nginx/.ngxpasswd;

}

Nginx详解以及LNMP的搭建

用户口令文件:

① 明文文本:格式name:password:comment

② 加密文本:由htpasswd 命令实现,httpd-tools 包所提供

Nginx详解以及LNMP的搭建

4.3 状态信息页面

ngx_http_stub_status_module 模块,用于输出nginx 的基本状态信息

① 设置

② 输出信息示例:

Active connections: 291

server accepts handled requests

16630948  16630948  31070465  三个数字分别对应accepts,handled,requests 三个值

Reading: 6 Writing: 179 Waiting: 106

Nginx详解以及LNMP的搭建

③ 定义

Active connections: 当前状态,活动状态的连接数

accepts :统计总值,已经接受的客户端请求的总数

handled :统计总值,已经处理完成的客户端请求的总数

requests :统计总值,客户端发来的总的请求数

Reading :当前状态,正在读取客户端请求报文首部的连接的连接数

Writing :当前状态,正在向客户端发送响应报文过程中的连接数

Waiting:当前状态,正在等待客户端发出请求的空闲连接数

4.4 日志的设置

ngx_http_log_module 模块,指定日志格式记录请求

log_format name string ...;  定义日志格式

string 可以使用nginx 核心模块及其它模块内嵌的变量

② access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];  调用日志

access_log 路径  日志名 ;

访问日志文件路径,格式及相关的缓冲的配置

buffer=size  缓存大小

flush=time  多长时间清除缓存

示例:

log_format compression '$remote_addr-$remote_user [$time_local] '

'"$request" $status $bytes_sent '

'"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /spool/logs/nginx-access.log compression buffer=32k;

③ 略:open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];

open_log_file_cache off;

缓存各日志文件相关的元数据信息

max :缓存的最大文件描述符数量

min_uses :在inactive 指定的时长内访问大于等于此值方

可被当作活动项

inactive :非活动时长

valid: 验证缓存 中各缓存项是否为活动项的时间间隔

4.5 压缩

ngx_http_gzip_module  用gzip 方法压缩响应数据,节约带宽,默认没有设置开启

gzip on | off;

启用或禁用gzip 压缩

gzip_comp_level level;

压缩比由低到高:1 到 9,默认:1

③ gzip_disable regex ...;

匹配到客户端浏览器不执行压缩

gzip_min_length length;

启用压缩功能的响应报文大小

⑤ gzip_http_version 1.0 | 1.1;

设定启用压缩功能时,协议的最小版本,默认:1.1

gzip_buffers number size;

支持实现压缩功能时缓冲区数量每个缓存区的大小,默认:324k 或 168k

gzip_types mime-type ...;

指明仅对哪些类型的资源执行压缩操作;即压缩过滤器

默认包含有text/html不用显示指定,否则出错

查看nginx的mime类型:cat /etc/nginx/mime.types

⑧ gzip_vary on | off;

如果启用压缩,是否在响应报文首部插入“Vary: Accept-Encoding”

⑨ gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;

nginx:对于代理服务器请求的响应报文,在何种条件下启用压缩功能

off :对被代理的请求不启用压缩

expired,no-cache, no-store ,private :对代理服务器请求的响应报文首部Cache-Control 值任何一个,启用压缩功能

示例:

gzip on;

gzip_comp_level 6;

gzip_min_length 64;

gzip_proxied any;

gzip_types text/xml text/css application/Javascript;

测试压缩效果:

Nginx详解以及LNMP的搭建

4.6 ssl 加密的实现

https ssl 的实现

(1)server 里的选项:

1 、ssl on | off;

为指定虚拟机启用HTTPS protocol,建议用listen 指令代替

2 、ssl_certificate file;

当前虚拟主机使用PEM 格式的证书文件路径

3 、ssl_certificate_key file;

当前虚拟主机上与其证书匹配的私钥文件路径

4 、ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];

支持ssl 协议版本,默认为后三个

5 、ssl_session_cache off | none | [builtin[:size]] [shared:name:size];

builtin[:size] :使用OpenSSL 内建缓存,为每worker 进程私有

[shared:name:size] :在各worker 之间使用一个共享的缓存

6、ssl_session_timeout time;

客户端连接可以复用ssl session cache 中缓存的ssl 参数的有效时长,默认5m

示例:

server {

listen 443 ssl;

server_name ;

root /vhosts/ssl/htdocs;

ssl on;  //可省略

ssl_certificate /etc/nginx/ssl/nginx.crt;

ssl_certificate_key /etc/nginx/ssl/nginx.key;

ssl_session_cache shared:sslcache:20m;

ssl_session_timeout 10m;

}

Nginx详解以及LNMP的搭建

4.7 地址重写

ngx_http_rewrite_module 模块:

The ngx_http_rewrite_module module is used to change request URI using PCRE regular expressions,return redirects, and conditionally select configurations.

将用户请求的URI 基于PCRE regex 所描述的模式进行检查,而后完成重定向替换

示例:

-->

--> https://www.magedu.com/

(1)rewrite regex replacement [flag]

将用户请求的URI 基于regex 所描述的模式进行检查,匹配到时将其替换为replacement 指定的新的URI

注意:如果在同一级配置块中存在多个rewrite 规则,那么会自下而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查

隐含有循环机制, 但不超过10 次;如果超过,提示500响应码,[flag] 所表示的标志位用于控制此循环机制

如果replacement 是以 或https:// 开头,则替换结果会直接以重向返回给客户端

301 :永久重定向  302:临时重定向

Nginx详解以及LNMP的搭建

分析:目录跳转,正则匹配到zz开头的,都永久重定向到zhengzhou,且后边的uri不变,如:index.html,

[flag]:

① last :重写完成后停止对当前URI 在当前location 中后续的其它重写操作,而后对新的URI 启动新一轮重写检查;提前重启新一轮循环,不建议在lation 中使用

② break :重写完成后停止对当前URI 在当前location 中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环,建议在location 中使用

redirect :临时重定向,重写完成后以临时重定向方式直接返回重写后生成的新URI 给客户端,由客户端重新发起请求;不能以 或https:// 开头,使用相对路径,状态码:302

permanent: 重写完成后以永久重定向方式直接返回重写后生成的新URI 给客户端,由客户端重新发起请求,状态码 :301

(2)return

return code [text];  例:return 403 "error";

return code URL;    例:return 302 ;

return URL;            例:return ;

停止处理,并返回给客户端指定的响应码

例:连续跳转,image永久重定向到img,img又跳到

location /image {

rewrite ^/image/(.*)$   /img/$1 permanent;

}

location /img {

return   ;

}

(3)rewrite_log on | off;  把跳转的信息写到日志中

是否开启重写日志,  发送至error_log (notice level)

(4)set $variable value;

用户自定义变量,注意:变量定义和调用都要以$ 开头

(5)if (condition) { ... }

引入新的上下文, 条件满足时,执行配置块中的配置指令;server, location

condition:

比较操作符:

== 相同

!= 不同

~ :模式匹配,区分字符大小写

~* :模式匹配,不区分字符大小写

!~ :模式不匹配,区分字符大小写

!~* :模式不匹配,不区分字符大小写

文件及目录存在性判断:

-e, !-e  存在(包括文件,目录,软链接)

-f, !-f 文件

-d, !-d 目录

-x, !-x 执行

Nginx详解以及LNMP的搭建

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/314b55b3f7b111132061b89be9012d48.html