[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]