Ngx算法|Rewrite规则|优先级

环境信息

操作系统:CentOS 7.4 IP:192.168.0.111 在 Nginx 下,提供了 ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容。默认情况下,Nginx 已经安装了该模块。

1、先用第三方工具设置用户名、密码(其中密码已经加过密),然后保存到文件中, 2、接着在 Nginx 配置文件中根据之前事先保存的文件开启访问验证。

如何配置?

yum -y install httpd-tools
mkdir /usr/local/nginx/auth
htpasswd -bc /usr/local/nginx/auth/passwd admin 123456
cat /usr/local/nginx/auth/passwd
# /usr/local/nginx/auth/passwd 是生成密码后的文件保存路径(passwdfile),admin是用户名(username), 123456是密码
vi /usr/local/nginx/conf/nginx.conf
'''
	''' server 中添加
	auth_basic "Please input password";
	auth_basic_user_file /usr/local/nginx/auth/passwd;
'''


/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

参数详解

  • htpasswd命令选项参数说明 -c 创建一个加密文件; -n 不更新加密文件,只将htpasswd命令加密后的用户名密码显示在屏幕上; -m 默认htpassswd命令采用MD5算法对密码进行加密; -d htpassswd命令采用CRYPT算法对密码进行加密; -p htpassswd命令不对密码进行进行加密,即明文密码; -s htpassswd命令采用SHA算法对密码进行加密; -b htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码; -D 删除指定的用户。

Nginx算法、Rewrite规则、优先级

Nginx 五种算法

  • 轮询、权重、ip_hash、fair、url_hash


Rewrite规则

last : 相当于Apache里德(L)标记,表示完成rewrite <浏览器地址栏URL地址不变> break; 本条规则匹配完成后,终止匹配,不再匹配后面的规则 <浏览器地址栏URL地址不变> redirect: 返回302临时重定向,浏览器地址会显示跳转后的URL地址 permanent: 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

* 代表前面0或更多个字符 + 代表前面1或更多个字符 ? 代表前面0或1个字符 ^ 代表字符串的开始位置 $ 代表字符串结束的位置 . 为通配符,代表任何字符

根据路径条件

根据域名跳转

目录对换

/xxxx/123456 --to--> /xxxx?id=123456

浏览器请求头跳转

禁止访问指定后缀

禁止访问以.sh,.flv,.mp3为文件后缀名的文件

匹配浏览器信息

BBS rewrite 配置

BBS论坛rewrite规则配置


location 表达式

= 进行普通字符匹配。也就是完全匹配 ^~ 表示普通字符匹配。使用前缀匹配,如果匹配成功,则不再匹配其他location ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 @ 定义一个命名的location,使用内部定向时,例如 error_page, try_files

location优先级

正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。 第一优先级:等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项 第二优先级:^类型表达式。一旦匹配成功,则不再查找其他匹配项。 第三优先级:正则表达式类型( ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。 第四优先级:常规字符串匹配类型

请求匹配示例

优先级别顺序

(location =) > (location 完整路径 >) >(location ^~ 路径) >(location ~* 正则) >(location 路径)

Last updated