nginx访问控制详解

基于来源IP访问控制

ngx_http_access_module模块允许限制对某些客户端地址的访问

1:允许10.0.0.7和10段访问,其他全部拒绝。
allow 10.0.0.7;         #允许单个IP地址
allow 10.0.0.0/24;      #允许地址或地址段
deny all;               #拒绝所有

2:拒绝10.0.0.7或10段访问,其他全部允许。
deny 10.0.0.7;         #拒绝指定的地址或地址段
deny 10.0.0.0/24;      #拒绝指定的地址或地址段
allow all;             #允许所有的地址

注意:deny和allow的顺序是有影响的
默认情况下,从第一条规则进行匹配
如果匹配成功,则不继续匹配下面的内容。
如果匹配不成功,则继续往下寻找能匹配成功的内容。

测试配置:

server {
        listen       80;
        server_name  jingxiang.zqfstack.com;
        location / {
                root /data/jingxiang;
                index  index.html index.htm;

        }

        location /centos/ {
                allow 10.0.0.77;  #只允许本机访问
                deny all; #其他的全部拒绝
                root /data/jingxiang;
                charset utf-8;
                autoindex on; #开启目录游览功能
                autoindex_exact_size off;  #显示大小
                autoindex_localtime on;   #显示时间
                limit_rate_after 500k;   # 指定了在传输了多少数据之后开始应用 limit_rate 限制
                limit_rate       50k;    # 限制了单个连接的最大下载速率(50KB/s)
        }
}

本机访问是可以的。如下:

curl jingxiang.zqfstack.com/centos  -L -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.27.0
Date: Tue, 19 Aug 2025 07:46:06 GMT
Content-Type: text/html
Content-Length: 169
Location: http://jingxiang.zqfstack.com/centos/
Connection: keep-alive

HTTP/1.1 200 OK
Server: nginx/1.27.0
Date: Tue, 19 Aug 2025 07:46:06 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive

使用其他机器不可以访问,如下:
20250819154711

基于用户名和密码限制

基于用户名和密码限制 ,使用ngx_http_auth_basic_module模块。

yum install httpd-tools -y
/usr/bin/ab        #压测工具
/usr/bin/htpasswd  #生成密码工具

# 使用htpaaswd创建新的密码文件, -c创建新文件 -b允许命令行输入密码
htpasswd -b -c /usr/local/nginx/auth_pass zqf 1qaz@WSX
cat /usr/local/nginx/auth_pass
zqf:$apr1$Ae2.hhYG$QWtKcgiSyw81gtcMSKUl21

nginx配置文件:

server {
        listen       80;
        server_name  jingxiang.zqfstack.com;
        location / {
                root /data/jingxiang;
                index  index.html index.htm;
        }

        location /centos/ {
                auth_basic "zqf Auth access";                # 相当于一个说明
                auth_basic_user_file /usr/local/nginx/auth_pass;   # 外部链接的密码文件
                root /data/jingxiang;
                charset utf-8;
                autoindex on; #开启目录游览功能
                autoindex_exact_size off;  #显示大小
                autoindex_localtime on;   #显示时间
                limit_rate_after 500k;   # 指定了在传输了多少数据之后开始应用 limit_rate 限制
                limit_rate       50k;    # 限制了单个连接的最大下载速率(50KB/s)
        }
}

访问测试:
20250819155030

posted @ 2025-08-14 19:14  阿峰博客站  阅读(18)  评论(0)    收藏  举报