Nginx访问控制模块(http_access_module、http_auth_basic_module)详解

Nginx访问控制分类:
基于IP的访问控制:http_access_module
基于用户登录认证:http_auth_basic_module

基于IP的访问控制

//允许配置语法
Syntax:	allow	address	|	CIDR	|	unix:	|	all;
Default:	-
Context:	http,	server,	location,	limit_except

//拒绝配置语法
Syntax:	deny	address	|	CIDR	|	unix:	|	all;
Default:	-
Context:	http,	server,	location,	limit_except

//配置拒绝某一个IP,	其他全部允许
location	~	^/hello.html	{
	root	/usr/share/nginx/html;
	index	index.html;
	deny	你要拒绝的IP;
	allow	all;
}
//只允许某一个网段访问,其它全部拒绝
location	/	{
	root			html;
	index		index.php	index.html	index.htm;
	allow		192.168.56.0/24;
	deny		all;
}

nginx.conf配置文件中server下做如下配置:
在这里插入图片描述
deny或者allow多个IP可以写多个deny或者allow语句。

本机访问hello.html页面:
在这里插入图片描述

局限性

当客户端使用代理服务器访问web服务器资源时,web服务器使用remote_addr只能捕捉到代理服务器IP,无法捕捉真实的客户端IP,因此deny或者allow设置的IP对真实客户端IP无效。
在这里插入图片描述

解决办法

开启http_x_forwarded_for记录真实客户端IP地址以及代理服务器IP
如下图所示,代理服务器和web服务器都需要开启http_x_forwarded_for记录真实客户端IP。很容易看出这种方案的一个缺陷是如果代理厂商没有实现开始http_x_forwarded_for,则web服务器即使开启了http_x_forwarded_for也是无效的。
在这里插入图片描述

基于用户登录认证

//配置语法
Syntax:	auth_basic	string|	off;
Default:	auth_basic	off;
Context:	http,	server,	location,	limit_except

//⽤用户密码记录配置⽂文件
Syntax:	auth_basic_user_file	file;
Default:	-
Context:	http,	server,	location,	limit_except

需要安装组件:

yum install httpd-tools

创建加密文件:

htpasswd -c	/usr/local/nginx/auth admin

在nginx.conf的server下做如下配置:
在这里插入图片描述
现在,访问hello.html页面就需要输入用户名和密码,就是刚才创建的加密文件设置的用户名和密码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值