使用fdfs_client_java操作fdfs服务器时出现的问题,fdfs配置文件里有一堆配置项

然后fdfs_client_java的README里写了这么一行↓

注2:除了tracker_server,其它配置项都是可选的

那么问题肯定就出在这里……不罗嗦了,直接说问题主要原因吧,

其实仔细看这个报错信息就能看出来,recv好像是socket编程的一个函数(没学过),意思就是服务端接收到了32,但是它要的是100(什么玩意)。出现这个的根本原因就是不是http请求的请求发送到了接收http请求的端口上。32和100应该是标志一类的东西,所以还有很多其他的方式引发这个错误。

我这里的主要原因是:

配置文件里的tracker_server指的是tracker服务端的地址,然后我这里写的是nginx服务器的地址,理论上是可行的,但是查看了fdfs_client_java的源码后发现它是用socket连接tracker服务器的,但是nginx默认只能处理http请求。

解决方案:

安装nginx时附加ngx_stream_core_module模块,可以让nginx处理socket,这个模块好像只能在安装nginx时附加上去,如果目前的nginx没有安装这个模块,那就删了重装吧。

解压完成后configure时加上一段命令,像这样:

1
./configure --prefix=/usr/local/nginx --with-stream

然后在配置文件里就可以额外添加针对socket的处理方式了

顺带提一个还有可能遇到的问题(也可能只有我才会遇到)

emsg:Connection refused: connect

就是服务端拒绝了连接,检查以下自己有没有在nginx和iptables中开放请求的端口

好久没发布了,不如这几天把之前写的一堆垃圾倒出来吧