Nginx的常用配置功能-wx5b0f4cbe878c2的博客

Windows Windows 2个月前 (08-15) 5次浏览 未收录 0个评论 扫描二维码

资源的访问控制

1.用户访问验证模块

????ngx_http_auth_basic_module模块可以实现让访问者,在访问某些特定资源时,只有输入正确的用户密码才允许访问web内容

????web上的一些内容不想被其他人知道,但是又想让部分人看到。nginx的http_auth模块以及Apache http_auth都是很好的解决方案。

语法:?????auth_basic?string?|?off;
默认值:?????auth_basic?off;
配置段:?????http,?server,?location,?limit_except
默认不开启认证;后面如果跟上字符,这些字符会在验证弹窗中显示。

语法:?????auth_basic_user_file?file_path;
默认值:?????—
配置段:?????http,?server,?location,?limit_except

??配置示例:

????①使用htpasswd(如果没有请安装httpd-tools软件包)工具创建用户验证文件

[root@localhost?/]#?htpasswd?-c?-m?/etc/nginx/.passwd?ceshi
New?password:?
Re-type?new?password:?
Adding?password?for?user?ceshi

????②在需要验证的虚拟主机配置文件中配置location,添加auth_basic验证规则

[root@localhost?/]#?vim?/etc/nginx/conf.d/static.conf?
server?{
????????listen?80;
????????server_name?www.aa5.com;
????????access_log?/var/log/nginx/accecc.log?proxy;
????????location?/?{
????????root?/web/;
????????}
????????error_page?404?/notfound/notfound.html;
????????location?=/notfound/notfound.html?{
????????root?/web/;
????????}

????????location?^~?/admin/?{
????????root?/web/;
????????auth_basic?"please?input?your?password!!!";
????????auth_basic_user_file?/etc/nginx/.passwd;
????????}
}
[root@localhost?/]#?nginx?-s?reload

????③客户端访问指定目录提示用户验证才可以访问

Nginx的常用配置功能-wx5b0f4cbe878c2的博客

2.来源ip访问控制

????使用ngx_http_access_module模块来实现基于ip的访问控制功能

????可以应用的字段有http、location、server

????示例:

????????location?/?{
????????deny?192.168.2.162;????????????##拒绝指定ip访问
????????allow?all;?????????????????????##允许所有人访问
????????deny?192.168.1.0/24;???????????##拒绝指定网段访问
????????}

Nginx的URL重写(rewrite)

rewrite的组要功能是实现RUL地址的重定向,URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中,默认参数编译nginx就会支持rewrite的模块

rewrite语法格式及参数语法说明如下:?

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

注意:如果在同一级配置块中存在多个rewrite规则,那么会自下而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查,因此,隐含有循环机制;[flag]所表示的标志位用于控制此循环机制

????rewrite????<regex>????<replacement>????[flag];
????关键字??????正则????????替代内容??????????flag标记
?
????关键字:其中关键字error_log不能改变
????正则:perl兼容正则表达式语句进行规则匹配
????替代内容:将正则匹配的内容替换成replacement
????flag标记:rewrite支持的flag标记
?
flag标记说明:
last??#重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环
break??#本条规则匹配完成即终止,不再匹配后面的任何规则
redirect??#返回302临时重定向,浏览器地址会显示跳转后的URL地址;不能以http://或https://开头
permanent??#返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

语法示例:

????????rewrite?^/(.*)?https://www.nnv5.cn/$1?permanent;????????????##将访问http站点的所有url永久重写到https的站点下
????????rewrite?^/(.*).png?/$1.jpg?permanent;???????????????????????##将访问.png结尾的url重写为.jpg
????????rewrite?^/?https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558164084618&di=6bf7732ebfd157b56f786931ccf20df2&imgtype=0&src=http%3A%2F%2Fpic.58pic.com%2F58pic%2F13%2F81%2F71%2F46K58PICXQ9_1024.jpg;

rewrite为固定关键字,表示开始进行rewrite匹配规则

regex部分是?^/(.*)?,这是一个正则表达式,匹配完整的域名和后面的路径地址

replacement部分是https://www.nnv5.cn/$1 ,$1是取自regex部分()里的内容。匹配成功后跳转到的URL。

flag部分?permanent表示永久301重定向标记,即跳转到新的?https://www.nnv5.cn/$1?地址上

配置示例:

①编辑虚拟主机配置文件添加访问本站点所有.jpg文件时都重写为.html

[root@localhost?web]#?vim?/etc/nginx/conf.d/static.conf?
server?{
????????listen?80;
????????server_name?www.aa5.com;
????????access_log?/var/log/nginx/accecc.log?proxy;
????????root?/web;
????????
????????rewrite?^/(.*).jpg?/$1.html;

????????location?/?{
????????root?/web/;
????????}
}
[root@localhost?web]#?vim?/web/aaa.html?
aaa.html

②客户端使用浏览器访问www.aa5.com/aaa.jpg测试验证,会直接访问到网站根目录下的aaa.html文件

Nginx的常用配置功能-wx5b0f4cbe878c2的博客

喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址