• 技术文章 >后端开发 >php教程

    nginx负载均衡同步上传文件的问题

    2016-06-06 20:06:06原创843
    大神们,我现在有个问题,帮我看下:
    因为使用nginx均衡负载,由于分发请求到不同服务器,这样如果只想把上传的图片只保存到一台服务器就会出问题。
    百度到的方法:
    第一种方法是代码里面使用ftp 把文件同步到保存服务器
    第二种方法是如果不是保存文件的服务器,使用curl 把文件提交到保存服务器再重新存一次。
    第三种方法就是直接使用保存服务器的ip来调接口了。第三种方法我们这边先不考虑。
    不知道大神们,遇到这种情况是怎么实现这种需求的

    回复内容:

    大神们,我现在有个问题,帮我看下:
    因为使用nginx均衡负载,由于分发请求到不同服务器,这样如果只想把上传的图片只保存到一台服务器就会出问题。
    百度到的方法:
    第一种方法是代码里面使用ftp 把文件同步到保存服务器
    第二种方法是如果不是保存文件的服务器,使用curl 把文件提交到保存服务器再重新存一次。
    第三种方法就是直接使用保存服务器的ip来调接口了。第三种方法我们这边先不考虑。
    不知道大神们,遇到这种情况是怎么实现这种需求的

    1. 宿主的nginx对于上传的location做特殊处理, 只让一台机器来负责文件上传, 不完美但是有效, 可以作为一段时间的过度方案

    2. 搭建一个分布式文件系统, 挂载到所有的服务器上, 处理文件上传后写只写入这个特定目录, nginx中规划一个location指向这个这个目录(例如/data/upload), 缺点就是要多维护一个这个分布式文件系统 (和你的第一种思路有点像, 但分布式文件系统不需要"同步")

    3. 使用外部CDN文件上传来解决这个问题, 七牛, 又拍云都可以

    1.专门整几台服务器用来存这些静态资源;
    2.整出几个盘,弄成网络盘(nfs),专门用来存储这些文件,每个服务器都去挂载这几个盘,和windows的共享文件夹类似;
    3.上传成功之后返回一个文件的url,这个url就是文件的地址了;

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php nginx nginx_proxy
    上一篇:七牛上传文件服务器显示502,如何解决? 下一篇:javascript - 利用微信jssdk 分享一个网页 提示invalid signature

    相关文章推荐

    • 解析PHP闭包及Clourse类方法的作用• PHP GUI趣味实现一个贪吃蛇• PHP集成环境推荐解决思路 • PHP 对 memcache操作类• php heredoc用法注意事项

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网