配置nginx访问多个服务器静态文件(解决nginx的www-data用户访问sshfs挂载目录的权限问题)

最近搭了一个双节点的服务,每个节点各自有静态文件目录,nginx访问这些静态目录就成了问题。当然我们可以搭建单独的文件服务器,但是那样成本太高了,接下来说一下当前场景的解决方案。

1. sshfs挂载静态文件目录

下面的挂载命令可以把多个其他服务器的media目录挂载到本地:

mkdir /local_path/media_1/
sshfs remote_user@remote_host:/remote_path/media/ /local_path/media_1/ -o allow_other

基于安全考虑,nginx不能使用root用户启动,默认使用www-data用户启动,sshfs挂载时候要加上“-o allow_other”参数否则nginx的www-data用户没有访问挂载的目录的权限

我们挂载另外两台服务器的media目录到本地,最终本地的目录结构如下:    

/local_path/media/
/local_path/media_1/
/local_path/media_2/

2. 配置nginx的location

使用nginx的try_files功能查找多个静态文件目录,关于try_files的教程很多,这里就不赘述了。location配置如下:

location ~^/media/(.*)$ {
    valid_referers server_names $server_name;
    if ($invalid_referer) {return 403;}  # 安全加固,防止文件盗链
    proxy_read_timeout 5;
    proxy_send_timeout 5;
    proxy_connect_timeout 5;
    autoindex off;  # 安全加固,关闭目录浏览
    add_header Cache-Control private;
    root /local_path;  # 申明静态文件根目录
    try_files /media/$1 /media_1/$1 /media_2/$1 =404;  # 查找多个子目录,多个子目录找不到返回404
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值