屏蔽某个或者某些ip访问项目的操作

文章详细介绍了如何使用Nginx和.htaccess文件来屏蔽特定IP或IP段的访问。在Nginx中,通过分析access.log找到要屏蔽的IP,创建block.conf文件并添加deny规则,然后在nginx.conf中包含此文件并重启服务。对于.htaccess,可以直接在文件中添加deny规则来限制特定IP或IP段,修改后立即生效,适用于各种web服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.使用nignx屏蔽步骤

  1. 查找要屏蔽的ip

在nginx配置文件下,运行如下命令,查找访问的ip列表
awk '{print $1}' access.log |sort |uniq -c|sort -n
access.log 为日志文件,通过以上命令得到如下结果:
格式:
前面是ip的访问次数,后面是ip
... 
 1000 180.153.123.35
 1231 201.35.154.189
 4564654 226.210.2.135
 ...

2.在nginx的配置目录下面,新建屏蔽ip文件

命名为block.conf,以后新增加屏蔽ip只需编辑这个文件就可以啦,这里以屏蔽226.210.2.135这个ip为例:
vi block.conf
加入以下内容,然后wq保存:
deny 165.91.122.67; 

3.在nginx的配置文件nginx.conf中加入block.conf配置

可以放到http, server, location, limit_except语句块,需要注意相对路径,本例当中nginx.conf,block.conf在同一个目录中,要加入的语句如下:
include block.conf; 

4.重启一下nginx的服务

重启一下nginx的服务,配置生效,重启命令如下:
/usr/local/nginx/nginx -s reload 

5.高级用法

屏蔽ip的配置文件既可以屏蔽单个ip,也可以屏蔽ip段,或者只允许某个ip或者某个ip段访问
# 屏蔽单个ip访问
deny IP; 

#允许单个ip访问
allow IP; 

#屏蔽所有ip访问
deny all; 

#允许所有ip访问
allow all; 

#屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令
deny 123.0.0.0/8

#屏蔽IP段即从123.25.0.1到123.25.255.254访问的命令
deny 124.25.0.0/16

#屏蔽IP段即从123.25.6.1到123.25.7.254访问的命令
deny 123.25.7.0/24

#如果想实现这样的应用:除了几个IP外,其他全部拒绝,就这样写
#注意:allow必须在deny的前面配置,不然allow不生效
allow IP1; 
allow IP12;
deny all; 
单独网站屏蔽IP的方法:
把include blocks.conf; 放到网址对应的在server{}语句块
所有网站屏蔽IP的方法:
把include blocks.conf; 放到http {}语句块

二使用.htaccess屏蔽步骤

除了修改Nginx配置文件之外,还可以通过修改网站配置文件.htaccess来限制某IP(段)访问

1.屏蔽ip

将下面内容保存为.htaccess文件,上传至网站根目录,如果原来已经存在.htaccess文件的,将以下内容加到该文件开头
Order allow,deny
allow from all
deny from IP1  // 需要屏蔽的IP

2.屏蔽IP的某个段

如果要限制一个IP段,比如要限制110.110.110.*这个C段,则这样配置
Order allow,deny
allow from all
deny from 110.110.110
以上内容表示拒绝110.110.110开头的所有IP,其他IP允许

3.屏蔽多个IP段

多个IP中间用空格隔开
Order allow,deny
allow from all
deny from 111.111.111 111.222.222 111.333.333

3.总结

该配置不用重启web服务器,修改立即生效
此外,该方法适用任何web网站,例如IIS、Apache网站
### IDEA 中 Tomcat 运行 Web 项目时 JVM 创建失败的原因分析 在 IDEA 使用 Tomcat 启动 Web 项目时遇到 `Could not create the Java Virtual Machine` 或者 `Fatal Exception` 的错误,通常是由以下几个方面引起的: #### 1. **JVM 参数设置不当** 如果在项目的运行配置中设置了过高的内存参数(如 `-Xmx`),可能会导致系统资源不足而无法创建 JVM 实例。这种情况下可以尝试调整 VM options 的值[^1]。 #### 调整方法: 打开 IDEA 的 Run/Debug Configurations,在 VM Options 字段中修改内存分配参数。例如: ```plaintext -Xms512m -Xmx1024m -XX:MaxPermSize=256m ``` 若仍然报错,则逐步降低最大堆内存大小(`-Xmx`)直到能够成功启动为止。 #### 2. **端口冲突** 当多个服务试图绑定同一个网络端口时会发生端口占用问题。根据引用中的描述,“Address localhost:1099 is already in use”,表明当前系统的某个进程已经占用了该端口号[^3]。 #### 排查步骤: - 使用命令 `netstat -ano | findstr :1099` 查看是否有其他程序正在监听此端口。 - 记录返回结果中的 PID 并通过任务管理器终止对应的服务或应用程序。 ```cmd taskkill /F /PID <PID> ``` - 修改 Tomcat 配置文件 (`server.xml`) 来更改默认 JNDI RMI 注册表端口(通常是 1099)。例如将 `<Connector>` 标签内的属性更新为新的未被使用的端口号。 #### 3. **权限不足** 某些操作系统可能不允许普通用户执行特定操作或者访问某些路径下的可执行脚本。这可能导致即使手动运行 `.bat` 文件也无法正常工作的情况发生[^5]。 #### 处理方式: 尝试以管理员身份重新安装并配置 JDK/Tomcat 环境变量;另外也可以直接右键单击相关批处理文件选择“以管理员身份运行”。 #### 4. **版本兼容性问题** Spring 库或其他依赖项可能存在针对不同版本 JDK 编译后的字节码差异。当从较低版本迁移到较高版本时如果没有及时替换相应组件则会出现类似 “are only available on JDK 1.5 and higher”的提示信息[^2]。 #### 解决方案: 更新所有第三方库至最新稳定版并与目标平台保持一致即可消除此类隐患。 --- ### 关于本地主机地址不可达的问题 对于无法 ping 到 `localhost:1099` 的现象,主要考虑以下几点因素: - **防火墙拦截**:现代 Windows 版本自带的高级安全功能有时会阻止未经许可的数据包传输行为。确认是否启用了入站规则允许 ICMP 请求以及 TCP 流量经过指定范围内的端口。 - **IPV6 支持缺失**:部分旧型驱动程序仅支持 IPV4 地址解析模式而不具备完整的双栈能力。可以通过编辑 hosts 文件强制映射域名到具体 IP 形式来规避这一限制条件。 ```ini ::1 localhost ipv6-loopback 127.0.0.1 localhost ``` - **Tomcat 自身限制**:尽管大多数时候我们会认为只要服务器处于活动状态就应该可以从外部探测得到回应信号,但实际上有些框架出于安全性考量故意屏蔽掉不必要的反馈机制。查阅官方文档了解是否存在额外开关选项控制暴露程度。 --- ### 总结建议 综合以上讨论可以看出造成这些异常状况背后隐藏着多方面的潜在诱因。因此推荐按照下列顺序逐一验证直至彻底解决问题为止: 1. 审核现有虚拟机初始化参数设定合理性; 2. 清除现存干扰源避免重复定义相同编号接口实例; 3. 提升账户等级获取完全操控权以便顺利加载必要模块; 4. 确认选用工具集均达到预期最低需求标准之上; 5. 最后还要注意检查物理层面上网卡驱动程序是否完好无损并且正确激活了循环自检特性。 ```bash # 示例代码片段用于检测端口可用性 import socket def check_port(host='127.0.0.1', port=1099): s = None try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) result = s.connect_ex((host, port)) return True if result == 0 else False except Exception as e: print(f"Error occurred while checking {port}: ", str(e)) return False finally: if s: s.close() print(check_port()) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值