You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法用ufw deny规则拒绝x.x.x.x访问Nginx HTTP?如何添加该规则?

UFW 拒绝特定IP访问Nginx HTTP的正确配置方法

UFW完全支持这类规则,你的命令无效大概率是规则顺序冲突或者规则优先级问题导致的,以下是具体解决步骤:

1. 先检查现有规则顺序

UFW按规则列表从上到下的顺序匹配,若允许80端口的规则排在拒绝规则前面,拒绝规则会被直接跳过。执行以下命令查看带编号的规则:

ufw status numbered

如果看到类似[ 1] Allow Anywhere on 80/tcp的规则在拒绝规则之前,就会导致拒绝逻辑不生效。

2. 添加优先级更高的拒绝规则

方法一:直接针对端口和IP添加

把拒绝规则插入到规则列表最顶部(优先级最高):

ufw insert 1 deny from x.x.x.x to any port 80 proto tcp

执行后重启UFW让规则生效:

ufw reload

方法二:使用Nginx应用配置

如果要通过"Nginx HTTP"应用名称添加规则,先确认应用配置文件存在:

cat /etc/ufw/applications.d/nginx

正常情况下会看到类似内容:

[Nginx HTTP]
title=Web Server (Nginx, HTTP)
description=Small, powerful, scalable web server
ports=80/tcp

确认配置存在后,插入优先级最高的拒绝规则:

ufw insert 1 deny from x.x.x.x to app "Nginx HTTP"

同样执行ufw reload完成生效。

3. 验证规则是否生效

  • 再次执行ufw status numbered,确认拒绝规则排在所有允许80端口的规则之前。
  • 从目标IP x.x.x.x 尝试访问服务器80端口,若无法访问则规则生效;也可以在服务器上用tcpdump抓包验证:
tcpdump -i any host x.x.x.x and port 80

如果看不到该IP的请求包,说明规则已成功拦截。

常见排查点

  • 检查是否有其他防火墙工具(如iptables)手动修改过规则,执行ufw reload会重置iptables为UFW的规则集。
  • 用ss -tulpn | grep nginx确认Nginx确实监听在80端口,避免端口配置不一致导致规则失效。
  • 若服务器在NAT网关后,确保网关的转发规则没有绕过UFW的拦截逻辑。

内容的提问来源于stack exchange,提问作者Ginger4567

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:45:34