欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx+Ftp配置图片服务器,实现网址直接访问图片

程序员文章站 2022-05-01 19:50:30
...

一、Nginx

教程:https://blog.****.net/zyw_java/article/details/77114671

这个教程要注意,里面的路径有点问题,详情见第三部分

效果:在ip:port的时候可以看到

Nginx+Ftp配置图片服务器,实现网址直接访问图片

二、ftp

教程:https://cloud.tencent.com/developer/labs/lab/10002

可以使用匿名登录也可以,然后配置自己的路径来访问,记得chmod 777 增加权限。如果不新建目录也是可以的,ftp的默认目录在/var/ftp/pub,修改根目录可以看这个教程

效果:

Nginx+Ftp配置图片服务器,实现网址直接访问图片

三、使用Nginx+ftp组合,实现在网页上直接访问图片

上述已经配置好了ftp和Nginx,但是上面在操作起来还有一些问题:

  • 403 Forbidden的情况,就是一般Nginx的默认启动用户的nobody,而nobody是没有任何权限的,也就是即便你给文件夹chmod,Nginx也是访问不到的,找到Nginx的配置文件(我的配置文件在/usr/local/nginx/conf/nginx.conf),任何第一行就可以看到

    user nobody
    

    把nobody改成root(或者其他有权限的用户)就可以了

  • 路径问题。在前面的配置中,配置Nginx的server代码如下,需要解读一下,其中的location是起效果的!如果把图片直接放在pub文件里面,访问ip:8190/img/pizza.jpg是会失败的。需要在pub里面再加一个img文件夹,然后将图片放入img里面,才可以通过ip:8190/img/pizza.jpg访问。

server {
    listen       8190;
        error_log  logs/storer_error.log debug;
        access_log logs/storer_access.log main;
        location /img/ {
                #alias /data/ftp/pub/img/;
                root /data/ftp/pub/;
        }
}

效果:
Nginx+Ftp配置图片服务器,实现网址直接访问图片

Android 上传图片

再上面的操作弄完之后,可以根据腾讯云的教程设置用户,然后开放写权限。

  • 可以先用FileZilla之类软件测试上传,如果出现错误码则百度谷歌解决问题,一般都是权限问题
  • 可以手动上传成功之后,使用下面命令登录即可,把其中的ip,port,账户密码改成自己设置的。
public static boolean uploadImage(String imagePath){
        boolean flag;
        try {
            //创建一个FTPClient对象
            FTPClient ftpClient = new FTPClient();
            //创建FTP连接(端口号默认21)
            ftpClient.connect("ip", port);
            //登录FTP服务器,使用用户名密码
            ftpClient.login("账号", "密码");
            ftpClient.enterLocalPassiveMode();
            //读取本地文件
            File uploadFile = new File(imagePath);
            FileInputStream inputStream = new FileInputStream(uploadFile);
            //设置上传路径
            ftpClient.changeWorkingDirectory("img/");
            //修改上传文件格式
            ftpClient.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
            //上传文件
            flag = ftpClient.storeFile(uploadFile.getName(), inputStream);
            //关闭连接
            ftpClient.logout();
            return flag;
        }catch (Exception e){
            e.printStackTrace();
        }

但是需要注意的是,我的文件结构是ftp/pub/img/*.jpg,而且登录进去的目录是再pub里面,所以我需要再changeworkingDirectory,可以根据自己的目录结构来调整。一开始误以为这个目录问题是权限问题,弄了很久。

相关标签: 安装配置