FastDFS 整合nginx问题整理

本文解决Nginx启动后访问资源URL出现404问题,并通过调整配置解决。此外,还探讨了使用FastDFS上传同一文件时遇到的SocketException错误及其解决方案。

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

   安装前确认是正常可以访问上传文件的,安装nginx启动后访问原先资源URL出现404错误。如下图:

反复检查未发现配置有误,怀疑是nginx权限的问题,在nginx.conf添加“user root;”重启nginx服务后OK

重复上传同一从文件且前缀相同时会报下面错误:

从文件的前缀参数必须输入,且如果是一个主文件多个从文件则从文件的前缀必须不相同。

java.net.SocketException: Software caused connection abort: socket write error

    at java.net.SocketOutputStream.socketWrite0(Native Method)

    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

    at java.net.SocketOutputStream.write(SocketOutputStream.java:124)

    at org.csource.fastdfs.ProtoCommon.closeSocket(ProtoCommon.java:344)

    at org.csource.fastdfs.TrackerServer.close(TrackerServer.java:76)

    at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:864)

    at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:307)

    at org.csource.fastdfs.StorageClient1.upload_file1(StorageClient1.java:306)

    at com.pmsp.util.fileyum.FileManagerService.uploadSlaveFile(FileManagerService.java:165)

    at com.test.TestFileYum.uploadSlaveFile(TestFileYum.java:71)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)

    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)

    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)

    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)

    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)

    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)

    at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)

    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

    at org.junit.runners.ParentRunner.run(ParentRunner.java:220)

    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)

    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

FastDFS 是一个开源的轻量级分布式文件系统,它可以提供高性能的文件存储和访问服务。而 Nginx 是一个高性能的 Web 服务器和反向代理服务器,它可以用来加速静态文件的访问和负载均衡。 将 FastDFS 整合Nginx 中,可以通过 Nginx 提供的访问控制和负载均衡机制,提高 FastDFS 的性能和可靠性。 以下是 FastDFS 整合 Nginx 的步骤: 1. 安装 FastDFSNginx 在安装 FastDFSNginx 之前,需要确保系统已经安装了 libfastcommon 和 pcre 库。 安装 FastDFS 包括 tracker 和 storage 两个组件,可以通过以下命令进行安装: ``` wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz tar -zxvf V5.11.tar.gz cd fastdfs-5.11/ ./make.sh ./make.sh install ``` 安装 Nginx 可以通过以下命令进行安装: ``` wget https://nginx.org/download/nginx-1.20.0.tar.gz tar -zxvf nginx-1.20.0.tar.gz cd nginx-1.20.0/ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make make install ``` 2. 配置 FastDFS 配置 FastDFS 的时候,需要修改 tracker 和 storage 的配置文件,使其能够正常工作。 tracker 的配置文件路径为 /etc/fdfs/tracker.conf,可以通过以下命令进行修改: ``` vi /etc/fdfs/tracker.conf ``` 修改 tracker_server 配置项,将其设置为本机IP地址,例如: ``` tracker_server=192.168.1.100:22122 ``` storage 的配置文件路径为 /etc/fdfs/storage.conf,可以通过以下命令进行修改: ``` vi /etc/fdfs/storage.conf ``` 修改 tracker_server、store_path0 和 base_path 配置项,将其设置为本机IP地址和存储路径,例如: ``` tracker_server=192.168.1.100:22122 store_path0=/data/fastdfs/storage base_path=/data/fastdfs ``` 3. 配置 Nginx 配置 Nginx 的时候,需要修改 nginx.conf 配置文件,使其能够正常工作。 nginx.conf 的路径为 /usr/local/nginx/conf/nginx.conf,可以通过以下命令进行修改: ``` vi /usr/local/nginx/conf/nginx.conf ``` 在 http 配置段中添加以下配置: ``` http { ... # fastdfs 配置 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_intercept_errors on; fastcgi_pass_header Server; fastcgi_hide_header X-Powered-By; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # fastdfs 分组和文件id参数 fastcgi_param FILE_GROUP $arg_group_name; fastcgi_param FILE_ID $arg_file_id; # fastdfs 路径 fastcgi_param FASTCGI_SCRIPT_NAME /fastdfs; fastcgi_param FASTCGI_DOCUMENT_ROOT /usr/local/nginx/html; } ``` 在 server 配置段中添加以下配置: ``` server { ... location /group1/M00 { ngx_fastdfs_module; } } ``` 其中,/group1/M00 是 FastDFS 中默认的组名和存储路径,可以根据实际情况进行修改。 4. 启动 FastDFSNginx 启动 FastDFSNginx 可以通过以下命令进行启动: ``` /etc/init.d/fdfs_trackerd start # 启动 tracker /etc/init.d/fdfs_storaged start # 启动 storage /usr/local/nginx/sbin/nginx # 启动 nginx ``` 启动成功后,可以通过访问 http://localhost/group1/M00/test.jpg 来测试是否能够正常访问 FastDFS 中的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值