温馨提示×

CentOS下Nginx如何限制访问

小樊
47
2025-08-22 19:01:48
栏目: 智能运维

在CentOS下,您可以通过配置Nginx的访问控制来限制访问。以下是一些常用的方法:

  1. 限制IP访问

编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf),在server块中添加以下内容:

location / {
    allow 192.168.1.1; # 允许访问的IP地址
    deny all; # 拒绝其他所有IP地址访问
}

192.168.1.1替换为您希望允许访问的IP地址。如果您希望允许多个IP地址访问,可以用空格分隔它们。

  1. 限制用户访问

首先,您需要创建一个密码文件,用于存储用户名和密码。可以使用htpasswd命令创建:

sudo yum install httpd-tools
sudo htpasswd -c /etc/nginx/.htpasswd username

username替换为您希望创建的用户名。按照提示输入密码。

接下来,在Nginx配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf)的server块中添加以下内容:

location / {
    auth_basic "Restricted Access"; # 设置访问提示信息
    auth_basic_user_file /etc/nginx/.htpasswd; # 指定密码文件路径
}
  1. 限制请求速率

在Nginx配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf)的http块中添加以下内容:

http {
    ...
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
    ...
}

这将会限制每个IP地址每秒只能发送一个请求。您可以根据需要调整rate参数的值。

然后,在server块中使用limit_req指令应用限制:

server {
    ...
    location / {
        limit_req zone=mylimit burst=5;
    }
}

这将允许短时间内的突发请求,最多允许5个突发请求。

  1. 限制特定文件类型访问

在Nginx配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf)的server块中添加以下内容:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    deny all;
}

这将限制对这些文件类型的访问。如果您希望允许访问这些文件类型,可以将deny all;替换为allow all;

完成以上配置后,保存文件并重启Nginx服务:

sudo systemctl restart nginx

现在,您的Nginx服务器应该已经根据您的配置限制了访问。

0