Nginx实现访问控制

news/2024/7/7 21:44:56 标签: nginx

目录

    • 一、Nginx访问控制模块
      • 1.1 基于IP的访问控制
      • 1.2 基于Basic Auth 认证
    • 二、基于IP的访问控制实战
      • 2.1 allow
      • 2.2 deny
    • 三、基于Basic Auth认证的访问控制实战

一、Nginx访问控制模块

实现Nginx的访问控制有两种方式:基于IP的访问控制和基于Basic Auth 认证的访问控制。

1.1 基于IP的访问控制

  • 访问控制模块:http_access_module

    nginx中内置ngx_http_access_module,可通过设置allow和deny来实现IP的访问控制。

  • 配置语法

    编辑/usr/local/nginx/conf/nginx.conf配置文件。

    Syntax:allow address | all;
    default:默认无
    Context:http,server,location
    Syntax:deny address | all;
    default:默认无
    Context:http,server,location
    

    allow 允许 //ip或者网段
    deny 拒绝 //ip或者网段

1.2 基于Basic Auth 认证

  • 访问控制模块:http_auth_basic_module

    Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后才能正确的访问网站。我们使用htpasswd来生成密码信息,首先要安装httpd-tools,在httpd-tools中包含了htpasswd命令。

  • 配置语法

    编辑/usr/local/nginx/conf/nginx.conf配置文件。

    Syntax:auth_basic string | off;
    default:auth_basic off;
    Context:http,server,location
    
    Syntax:auth_basic_user_file file;
    default:默认无
    Context:http,server,location
    file:存储用户名密码信息的文件。
    

二、基于IP的访问控制实战

2.1 allow

(1)编辑Nginx配置文件

查看一下我宿主机IP。

在这里插入图片描述

server {
       listen       80;
       server_name  localhost;

            location / {
            root   html;
            index  index.html index.htm;
            deny 192.168.0.100;    #拒绝该IP访问我的Nginx服务器
            allow all;
            }
}

实现功能:

  • 宿主机IP为192.168.0.100,虚拟机IP为192.168.0.106,故这里禁止宿主机访问,允许其他所有IP访问。
  • 当宿主机访问http://192.168.0.106时,显示403 Forbidden
  • 当然也可以反向配置,同时也可以使用IP网段的配置方式,如allow 192.168.0.0/24;表示满足此网段的IP都可以访问。

需要注意:

  • 按顺序匹配,已经被匹配的ip或者网段,后面不再被匹配。
  • 如果先允许所有ip访问,在定义拒绝访问。那么拒绝访问不生效。
  • 默认为allow all
[root@zrs conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@zrs conf]# /usr/local/nginx/sbin/nginx -s reload

(2)浏览器端访问

可见权限被拒,返回403状态码。

在这里插入图片描述

2.2 deny

如果你想拒绝某个指定URL地址的所有请求,只需要在 location 块中配置 deny all 指令即可。

server {
       listen       80;
       server_name  localhost;

            location / {
            root   html;
            index  index.html index.htm;
            deny all;  #拒绝所有客户端访问
            }
}
[root@zrs conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@zrs conf]# /usr/local/nginx/sbin/nginx -s reload

三、基于Basic Auth认证的访问控制实战

有时我们会有这么一种需求,就是你的网站的某些页面不希望公开,我们希望的是某些特定的客户端可以访问。那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些不速之客。

基于用户的信任登录模块:http_auth_basic_module

(1)编辑配置文件/usr/local/nginx/conf/nginx.conf

server {
       listen       80;
       server_name  localhost;

            location / {
            root   html;
            index  index.html index.htm;
            auth_basic "Auth access test!";
		    auth_basic_user_file /usr/auth_conf;
            }
}

auth_basic不为off,开启登录验证功能,auth_basic_user_file加载账号密码文件。

(2)建立口令文件

htpasswd 是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件。

[root@zrs ~]# yum install -y httpd-tools
[root@zrs ~]# htpasswd -cm /etc/nginx/auth_conf user1   #-c:创建解密文件;-m:MD5加密
[root@zrs ~]# htpasswd -m /etc/nginx/auth_conf user2
[root@zrs ~]# cat /etc/nginx/auth_conf
user1:$apr1$RKPoSilw$Bu2gK7LEhQVjKA/5KsLht/
user2:$apr1$w.//6E7A$7ce/.P4FceOwmrlLtw/TQ/

(3)浏览器端访问

在这里插入图片描述

在这里插入图片描述
以上操作均实现了访问控制的效果,这对于我们的运维安全是由一定的实际效果的。


http://www.niftyadmin.cn/n/1865308.html

相关文章

zabbix监控mysql主从状态及延迟

目录一、实施方案二、MySQL主从同步三、Zabbix监控主从状态3.1 自定义key3.2 Zabbix监控四、Zabbix监控主从延迟4.1 自定义key4.2 Zabbix监控一、实施方案 这里做的是简单的一主一从监控,一主多从和多主多从的监控方法一样。 主机功能192.168.139.151zabbix_server&…

什么是 值传递,地址传递和引用传递 有什么区别

什么是值传递,地址传递和引用传递?它们有什么不同?这在学校考试,找工作面试中都是常见的问题。它们之间的区别容易搞错,长时间不用也容易忘记。最近又被问到这个问题,想想还是整理一下记下来,也…

字符串Hash函数评估

Hash查找因为其O(1)的查找性能而著称,被对查找性能要求高的应用所广泛采用。它的基本思想是:(1) 创建一个定长的线性Hash表,一般可以初始化时指定length; (2) 设计Hash函数,将关键字key散射到Hash表中。其中hash函数设计是最为关…

zabbix监控服务器CPU状态

目录一、实施方案二、Zabbix监控服务器磁盘使用情况三、Zabbix监控服务器CPU使用情况四、Zabbix监控服务器内存使用情况4.1 自定义监控脚本4.2 mem使用情况4.3 swap使用情况一、实施方案 151主机作为Zabbix监控端,152主机作为server服务端。 主机功能192.168.139.15…

socket的TCP通信简单例子

/*tcp客户端程序&#xff0c;注意一定要修改addr的值和本机相同才能正常工作*/#include <stdio.h>#include <unistd.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <arpa/inet.h>#include <string.h>#include…

“重复数据删除”技术的十大问题

1&#xff0c;到底什么是“重复数据删除(Deduplication)”技术 简单地说&#xff0c;就是在通过网络传输或存储数据时&#xff0c;不传送或存储多份相同 数据&#xff0c;以减少对网络带宽和存储空间的占用。实际上以前的SIS&#xff08;单实例存储&#xff09;就是一种Dedu技…

linux中内核的一个不错的参数somaxconn

转载自:点击打开链接 在linux中&#xff0c;/proc/sys/net/core/somaxconn这个参数&#xff0c;linux中内核的一个不错的参数somaxconn 看下其解析&#xff1a; 对于一个TCP连接&#xff0c;Server与Client需要通过三次握手来建立网络连接.当三次握手成功后, 我们可以看到端口的…

LVS四层负载均衡规划及部署

目录前言一、环境规划二、环境架构三、环境部署3.1 部署LVS-keepalived服务3.1.1 LVS-master端3.1.2 LVS-backup端3.1.3 启动keepalived3.2 部署Nginx服务3.2.1 两台机器部署nginx服务3.2.2 两台机器lo均配置vip3.2.3 两台机器均配置nginx反向代理3.3 部署Tomcat后端应用服务3.…