apache FtpService 报错421
421错误原因:
同时连接该ftp的人数过多,一般ftp网站都有同时登陆人数的上限,超过该上限就会出现421错误。
分析:
- 连接超时或者数据传输超时
- 主动被动模式选择不符合网络环境
- FtpService服务器的线程数量配置
基础知识:
FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常
21端口是命令端口,20端口是数据端口。当混入主动/被动模式的概念时,数据端口就有可能不是20了。
解决方案:
1. 连接超时或者数据传输超时
ftpClient.setDataTimeout(60000); //设置传输超时时间为60秒
ftpClient.setConnectTimeout(60000); //连接超时为60秒
2. 主动被动模式选择不符合网络环境
主动模式:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 <- 服务器 20端口
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
被动模式:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 -> 服务器 >1023端口
被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
折中方式:
既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。
服务端是两种模式的,使用哪种模式取决于客户端,同时关键点在于网络环境适合用哪种模式,比如客户端在防火墙内,则最好选择被动模式
。
ftpClient.enterLocalActiveMode()便是配置成主动模式
ftpClient.enterLocalPassiveMode()则配置成被动模式。
FTP主动模式和被动模式的区别参考:https://www.cnblogs.com/ajianbeyourself/p/7655464.html
3. FtpService服务器的线程数量配置
在res\conf目录中找到ftpd-typical.xml文件,添加最大登录数等配置
<server xmlns="http://mina.apache.org/ftpserver/spring/v1"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd"id="myServer" /*设置server的标志符,必须*/max-logins="5" /*设置同时登陆的最大人数*/anon-enabled="false" /*设置匿名登陆为不允许*/max-anon-logins="0" /*设置匿名登陆用户为0个*/max-login-failures="3" /*设置3次失败登陆后,关闭此链接*//*设置失败登陆后下一次登陆所需的时间间隔,防止暴力破解,单位是微秒*/login-failure-delay="30000"><listeners><!--设置默认的链接端口为2121,必须--><nio-listener name="default" port="2121"><ssl><!--设置密钥存储路径和密钥存储密码,必须--><keystore file="./res/ftpserver.jks" password="password" /></ssl><!--设置多少时间后关闭一个闲置的链接,单位是秒--><data-connection idle-timeout="60"><!--设置主动链接配置,端口号“1886”--><active local-port="1886"/><!--设置被动链接配置,端口设置为“1886”,扩展地址为“137.222.18.114”,当需要访问的服务器返回外网地址时使用--><passive ports="1886" address="0.0.0.0" external-address="137.222.18.114"/></data-connection></nio-listener></listeners><!--设置用户登陆信息,“./res/conf/users.properties”为文件路径,“encrypt-passwords=‘clear’”设置密码加密方式,默认是“MD5”,设置成“clear”表示不加密,直接输入--><file-user-manager file="./res/conf/users.properties" encrypt-passwords="clear"/>
</server>
Server元素详解
最大线程数max-threads这个提高了应该提高处理客户端连接的速度。
ftpd-typical.xml配置可参考官网:http://mina.apache.org/ftpserver-project/configuration_listeners.html
或者中文文档https://wenku.baidu.com/view/5f0ab75f312b3169a451a4d8.html
apache FtpService 报错421相关推荐
- apache 编译报错:undefined reference to `apr_array_clear'
apache 编译报错: modules/http/.libs/libmod_http.a(byterange_filter.o): In function `ap_set_byterange': b ...
- apache启动报错记录
[root@localhost apache2]# ./bin/apachectl start httpd: Syntax error on line 53 of /usr/local/apache2 ...
- 配置PHP启动Apache服务报错
为什么80%的码农都做不了架构师?>>> 在新的服务器(centos 6.3)编译安装完php-5.4.8,再配置好php.ini和httpd.conf后,启动apache-2 ...
- Apache服务器报错信息,端口号等原因
error.message 1 原因:windows端口转发,将本地8080端口监听到虚拟机的80端口 报错信息: Apache [Mon Sep 09 15:31:13.700225 2019] [ ...
- 报错Failure to find org.apache或 报错 The container 'Maven Dependencies' references non existing
Maven 本地仓库明明有jar包(或nexus私库中明明有jar包),pom文件还是报错解决办法 一般报错:"Failure to find org.apache.maven.plugin ...
- Apache添加PHP模块重启apache服务报错
根据网上教程,在Apache中添加php模块: LoadModule php7_module C:\Program Files\php\php-7.3.4-Win32-VC15-x64\php7apa ...
- Apache Knox报错大全
knox错误总结 windows browser 有时候打不开Knox UI hosts文件添加 Knox 的{{GATE_WAY}}ip的映射 就可以打开界面了 打开Knox admin_UI后显示 ...
- php安装完后 apache the requested has,Apache启动报错:the requested operation has failed
1.80端口被占用: Windows System进程 pid=4 占用 80端口 安装Apache,不能安装成服务,提示端口已经被占用. 在命令窗口输入 netstat -ano | findstr ...
- Apache启动报错:Apache is running a threaded MPM
解决:Apache is running a threaded MPM,but your PHP Modle is not compiled to be threadsafe. You need to ...
最新文章
- 表格全屏显示_2020-2026年中国手机显示屏市场现状研究分析与发展前景预测报告...
- 自然语言处理NLP常用开源/免费工具
- Linux vim光标快速移动指定行数G
- pythorch基本信息查询
- 监视程序中的死锁及其他
- vba里面的日期数据转换异常(Format error)(使用IsDate方法部分解决)
- hbase可视化工具_做数据可视化,三大热门BI工具试用总结
- H.264的三种开源编码器比较
- 玩转Eclipse1--基本知识与配置
- 第一天,搬家到博客园
- mysql handbook_MySQL 8 Administrator’s Guide
- jna调取第三方dll实战(罗技G29)
- 【OpenGrok代码搜索引擎】二、Windows10下基于Linux子系统搭建Opengrok代码搜索引擎
- 工作5年,从年薪10W到年薪100W:会赚钱的人,都懂规划
- 【eCPRI】(1)基本概念
- Rook下快速部署ceph分布式文件系统
- ApowerMirror PJ教程
- 第一部分 思科九年 一(20)
- 记一次k8s的pod间网络无法访问解决
- 数据库导入语句linux,数据库应用-SQL语句导入导出大全
热门文章
- 【ChatGPT】Window便签工具推荐几款,不用详细介绍
- 专题分纲目录 高效记忆/形象记忆
- matlab程序 地震 相干噪声_SAR滤波MATLAB程序
- 小米手机、红米手机、小米Pad屏幕四周不停闪烁的解决办法,亲测成功!
- 华为C8813Q刷机包 基于乐蛙OS5 优化内核 提升性能 稳定流畅
- iPhone6、iPad Pro惯性传感器性能对比
- 【历史上的今天】12 月 9 日:微软推出 Windows 2.0;五十年前的极客科技展;第一个获得专利的人
- 2022.05.05周五
- 流程图制作用什么软件?这些软件值得你尝试一下
- Linux Socket 编程--- WebSocket