如何在 NGINX 中阻止 IP 地址

[ad_1]

有时您可能需要屏蔽 IP 地址以保护您的网站免受 DOS 和 DDOS 等恶意攻击。 以下是如何在 NGINX 中轻松阻止 IP 地址以限制 IP 地址或阻止访问。 您可以使用这些步骤在 NGINX 中阻止/允许 IP 地址。

如何在 NGINX 中阻止 IP 地址

以下是在 NGINX 中阻止 IP 地址的步骤。

您可以使用拒绝指令轻松阻止 IP 地址、子网和 IP 范围。 同样,您可以使用 allow 指令允许 IP 地址、子网和 IP 范围。 您可以在 http、服务器或位置上下文中放置拒绝或允许指令。 您甚至可以结合使用 deny 和 allow 指令。

我们将分别查看这些用例中的每一个。

1.打开NGINX配置文件

如果你使用的是NGINX的主配置文件nginx.conf,没有虚拟主机,那么运行以下命令

$ sudo vi /etc/nginx/nginx.conf

如果您为您的网站(例如 www.website.com)配置了单独的虚拟主机,例如 /etc/nginx/sites-enabled/website.conf 然后使用以下命令打开其配置

$ sudo vi /etc/nginx/sites-enabled/website.conf

2.在NGINX中屏蔽IP地址

在 NGINX 中有多种方法可以阻止 IP 地址。 我们将研究它们中的每一个。 如果要阻止域或整个网站的 IP 45.43.23.21,可以在配置文件中添加以下行。

deny 45.43.23.21;

以上几行将使 NGINX 拒绝 IP 45.43.23.21。

奖励阅读:如何在 NGINX 中将 IP 地址列入白名单

在 NGINX 中阻止网站或域的 IP 地址

在任何 http、服务器或位置/块中添加以上行,如下所示

http{
   ...
   deny 45.43.23.21;
   ...
}

server{
    ...
    deny 45.43.23.21;
    ...
}


location / {
   deny 45.43.23.21;
}

奖励阅读:如何将位置重定向到另一个域

在 NGINX 中阻止子域的 IP 地址

假设您有两个子域(blog.website.com 和articles.website.com),它们的 NGINX 配置文件位于 /etc/nginx/sites-enabled/blog.conf 和 /etc/nginx/sites-enabled/articles.conf

如果您只想在 NGINX 中为 1 个子域(例如 blog.website.com)阻止 IP 地址,则将上述行放在该子域的 blog.conf 文件中

$ sudo vim /etc/nginx/sites-enabled/blog.conf
server {
  server blog.website.com;
  deny 45.43.23.21;
}

如果要在两个子域中阻止 IP 地址,请在 blog.conf 和articles.conf 文件中添加该行。

奖励阅读:如何在 NGINX 中更改端口号

在 NGINX 中阻止 IP 范围

如果要允许 IP 范围(例如 45.43.23.0 – 45.43.23.255),请使用 CIDR 格式 用于您的 IP 范围,因为 NGINX 只接受 IP 地址和 CIDR 格式。 您可以使用以下命令获取 IP 地址范围的 CIDR IP 到 CIDR 工具.

location / {
  deny 45.43.23.0/24;
}

在 NGINX 中为 URL 阻止 IP 地址

如果您只想阻止一个 URL(例如 /accounts/login)的 IP,则在该 URL 的位置块中添加上述拒绝指令。

location /accounts/login {
   deny 45.43.23.21;
}

奖励阅读:如何在 NGINX 中使用参数重写 URL

在 NGINX 中阻止多个 IP

如果你想在 NGINX 中阻止多个 IP 地址以限制对多个 IP 地址的访问,只需添加多个拒绝指令,如下所示,每个 IP 一个

deny 45.43.23.21;
deny 44.23.13.10;
allow all;

上面的代码将阻止 IP 地址 45.43.23.21 & 44.23.13.10,并允许其他地址。

您还可以将 IP 地址和 CIDR 范围组合在一起,如下所示

deny 44.23.13.10;
deny 45.43.23.0/24;
allow all;

奖励阅读:如何将 NGINX Web Root 移动到新位置

3.重启NGINX

最后,运行以下命令来检查更新的配置文件的语法。

$ sudo nginx -t

如果没有错误,请运行以下命令重新启动 NGINX 服务器。

$ sudo service nginx reload #debian/ubuntu
$ systemctl restart nginx #redhat/centos

就是这样! 现在 NGINX 将阻止访问配置文件中提到的那些 IP 地址和范围。

顺便说一句,如果您想创建图表和仪表板来监控您的业务或网站,您可以尝试 CodePre。 我们提供 14 天的免费试用。

[ad_2]

Related Posts