正则
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n次到m次
\ 取消元字符的特殊含义
() 分组与取值
指令的合并
值指令(可以合并),继承规则向上覆盖,子盖父
1、root
2、access_log
3、gzip
动作指令(不可以合并)
1、rewrite
2、proxy_pass
Listen指令
listen unix:/var/run/nginx.sockl
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000 bind;
listen [::]8000 ipv6only=on;
listen [::1];
server匹配顺序
1、 精确匹配
2、*在前的泛域名
3、*在后的泛域名
4、按文件中的顺序匹配正则表达式域名
5、default server
Http请求处理的11个阶段
Post_read realip
Server_rewrite rewrite
Find_config
rewrite rewrite
Post_rewrite
Preaccess limit_req,limit_conn
Access auth_basic,access,auth_request
Post_Acess
Precontent try_files
Content index,autoindex,concat
Log access_log
获取用户真实IP,并使用-postread阶段
开启 Http头部 X-Forwarded-For 用于传递IP
开启Http头部 X-Real-IP 用于传递用户IP
基于变量使用,binary_remote_app, remote_addr
Rewrite模块-return指令-Rewrite阶段
Rewrite模块-rewrite指令-Rewrite阶段
Syntax: rewrite regex replacement[flag];
将regex指定的url替换成replacement这个新的url
当replacement以http://或者Https://或者$schema开头,直接返回302重定向
替换后的url根据flag指定的方式进行处理
flag
--last 用replacement这个URI进行新的location撇皮
--break break指令停止当前脚本指令的执行,等价于独立的break
--redirect 返回302重定向
--permanent 返回301重定向
Rewrite_log,默认不打开,打开则需指定日志文件路径
Rewrite模块-if指令-Rewrite阶段
检查变量为空,或者是否为0,直接使用,
将变量与字符串做匹配,=或者!=
与正则做匹配,大小写敏感 ~或者!~ 大小写不敏感,~*或者!~*
检查文件,-f
检查目录, -d
检查文件,目录,软连接是否存在 -e
检查是否为可执行 -x
Find_config模块-location
= : 精确匹配
^~: 匹配上后则不再进行正则表达式匹配
~ 大小写敏感的正则匹配
~* 忽略大小写的正则匹配
location匹配顺序
= > ^~ > ~|~* > 最长前缀匹配 > /
Preaccess模块-http_limit_conn_module
在http中,定义共享内存(包括大小),以及key关键字
limit_conn_zone key zone=name:size;
限制并发连接数 limit_conn zone number;
限制发生的日志级别 limite_conn_log_level info|notice|warn|error;
限制发生向客户端返回的错误码 limit_conn_status code;
限制访问速率 limit_rate 50k
Preaccess模块-http_limit_req_module
在http中,定义共享内存(包括大小),以及key关键字
limit_req_zone key zone=name:size rate=rate(2r/m);每分钟只能请求两次
限制并发连接数 limit_req zone [burst=number][nodelay]; burst默认为0;nodelay,对burst中的请求不再采用延时处理的做法,而是立刻处理
限制发生的日志级别 limite_req_log_level info|notice|warn|error;
限制发生向客户端返回的错误码 limit_req_status code;
Access模块-http_access_module
顺序执行,先允许后拒绝比较合理。
Access模块-http_auth_basic
扩展,安装httpd-tools,使用htpasswd -c /etc/nginx/authpass Hp
auth_basic 默认为关闭,开启后,添加内容,在请求头返回内容
auth_basie_user_file file; 添加密码文件
Access模块-http_auth_request模块
功能:想上游的服务器转发请求,若上游服务器返回的响应码是2xx,则继续执行,若上游服务返回的是401或者403,则将响应返回客户端
原理:收到请求后,生成子请求,通过反向代理技术把请求传递给上游服务器
--with-http_auth_request_module 默认为编译进nginx
Precontent模块-ngx_http_try_files_module模块
功能:依次试图访问多个url对应的文件(由root或者alias指令指定),当文件存在时直接返回内容,如果所有文件都不存在,则按最后一个URL结果或者code返回
Precontent模块-ngx_http_mirror_module模块
功能:处理请求时,生成子请求访问其他服务,对子请求的返回值不做处理-----默认编译进Nginx
mirror uri|off 默认为关闭
mirror_request_body on|off 默认为打开