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

一、Nginx

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

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

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

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

二、ftp

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

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

效果:

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

三、使用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配置图片服务器,实现网址直接访问图片_第3张图片

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,可以根据自己的目录结构来调整。一开始误以为这个目录问题是权限问题,弄了很久。

你可能感兴趣的:(安装配置,nginx,centos,图片服务器)