nginx 的用法

参考官方文档

NGINX 可以根据特定 IP 地址或客户端计算机的 IP 地址范围允许或拒绝访问。要允许或拒绝访问,请在 上下文或 服务器 块中使用 允许 拒绝 指令:

您可以限制来自一个 IP 地址的同时 TCP 连接数。这对于防止拒绝服务 (DoS) 攻击很有用。

首先,让我们定义将存储到一个服务器的最大 TCP 连接数的*区域,以及用于识别连接的密钥。*这可以通过 上下文中的 limit_conn_zone 指令来完成:

1
2
3
4
5
stream {
    #...
    limit_conn_zone $binary_remote_addr zone=ip_addr:10m;
    #...
}

标识连接的密钥定义为$binary_remote_addr,以二进制格式表示客户端的 IP 地址。共享内存区域的名称是ip_addr,区域大小是 10 兆字节。

定义区域后,使用 limit_conn 指令限制连接。它的第一个参数指定先前由 limit_conn_zone 定义的共享内存区域的名称。作为第二个参数,指定每个 IP 地址的最大允许连接数,在 上下文或 服务器 块中(如本例中,它还显示了先决条件limit_conn_zone指令):

1
2
3
4
5
6
7
8
9
stream {
    #...
    limit_conn_zone $binary_remote_addr zone=ip_addr:10m;

    server {
        #...
        limit_conn ip_addr 1;
    }
}

限制带宽

通过这些设置,客户端可以通过单个连接以最高 100 KB/秒的速度下载数据,并通过单个连接以最高 50 KB/秒的速度上传数据。但是,客户端可以打开多个连接。因此,如果目标是限制每个客户端的整体加载速度,则连接数也必须限制1在上一节中描述的范围内。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
stream {
    #...
    limit_conn_zone $binary_remote_addr zone=ip_addr:10m;

    server {
        #...
        limit_conn ip_addr  1;
        proxy_download_rate 100k;
        proxy_upload_rate   50k;
    }
}

设置密码校验

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
http {
    server {
        listen 192.168.1.23:8080;
        root   /usr/share/nginx/html;

        location /api {
            api;
            satisfy all;

            deny  192.168.1.2;
            allow 192.168.1.1/24;
            allow 127.0.0.1;
            deny  all;

            auth_basic           "Administrator’s Area";
            auth_basic_user_file /etc/apache2/.htpasswd; 
        }
    }
}

https://cdn.wp.nginx.com/wp-content/uploads/2016/10/auth_required.png

限制国家 地理位置访问

参考文档

其他笔记

[[post/05.软件和系统/01.软件使用/02.NGINX | nginx负载均衡]]

[[post/14.新语言学习记录/语言技术/Golang/做项目/微服务网关项目/tcp代理实践/linux下使用 epoll优化 | epoll]]

[[post/14.新语言学习记录/linux/linux基础原理杂记/cpp语言使用/网络编程/epoll 学习使用 | cpp使用epoll]]