Nginx反向代理至go-fastdfs案例讲解_nginx

来源:脚本之家  责任编辑:小易  

背景

go-fastdfs是支持http协议的一款分布式文件系统,在一般的项目中,很少是直接将文件系统的地址暴露出来的,大多数都会通过nginx等软件进行反代过去,由于我司的业务和网络环境场景相对特殊,由公网部分(公有云)和内网部分(私有云)组成的混合云网络体系,公有云主要就是作为一个出口和入口以及运行一些审计认证等应用,对上游请求进行处理,从而减少私有云的处理次数,提升性能。那么也正是因为这样,在公网的环境下,要访问到私有云提供的服务则必须使用反向代理。同样道理,对于文件系统的访问也如此,如何在nginx中进行配置才能使得外部的网络请求可以反向代理到go-fastdfs呢?本文将逐步阐述。

一般配置

在一般的情况下,熟悉nginx的朋友都知道,如果需要配置反向代理,直接写一个location上下文和proxy模块即可,如果需要自定义前缀,使用一个rewrite模块即可。简单例子如下:

location ~ /dfs/group([0-9]) {
	proxy_pass http://localhost:8080;
	rewrite ^/dfs/(.*)$ /$1 break;
	proxy_set_header Host $host:$server_port;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

到这里,一般的反代配置就算是可以了,那么对于go-fastdfs而言是否可以了呢?对于go-fastdfs一般上传是可以了,但是呢,对于使用了tus做断点续传还是不够,为什么呢?因为tus服务端会返回301重定向,并且需要携带一定的请求头过去,所以还需要特别的设置一下。

支持Tus的反代配置

如果需要做tus的反代,要支持301重定向Location的重写还要支持一定的请求头转发,那该如何配置呢?请参考下面的配置

l

ocation ~ /dfs1/group([0-9]) {
	access_log logs/dfs/access.log main;
	error_log logs/dfs/error.log error;
	rewrite ^/dfs1/(.*)$ /$1 break;
	proxy_pass http://localhost:8051;
	# Disable request and response buffering
	proxy_request_buffering off;
	proxy_buffering off;
	proxy_http_version 1.1;
	proxy_set_header Host $host:$server_port;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	# 如果server_name不是公网域名,这个地方可以设置成ip
	proxy_set_header X-Forwarded-Host $hostname;
	proxy_set_header X-Forwarded-Proto $scheme;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
	# 因为使用了前缀加rewrite,所以要修改返回的Location加上反向代理的前缀
	proxy_redirect ~^(.*)/group([0-9])/big/upload/(.*) /dfs/group$2/big/upload/$3;
	client_max_body_size 0;
}

上面要注意一下就是proxy_redirect和client_max_body_size这两个配置,第一个配置是因为tus服务端返回的重定向Location是不会携带自定义前缀的,因此需要自己加入自定义的前缀,我这里是/dfs,如果是别的,更换下就好。第二个就是client_max_body_size了,这个是设置为0表示不管上传多大的文件都不会报request too large的问题,直接转发过去,如果需要设置,那么请设置大于等于chunkSize的数字。什么是chunkSize?就是tus客户端分块上传的时候,每一块的大小,具体请参考官方文档。

负载均衡配置

在配置了集群服务器的情况下,上传或者下载如何进行负载均衡呢?使用nginx做了反代,配合upstream模块就可以实现了,具体参考如下配置

upstream dfs_stream {
	server host1:port;
	server host2:port;
	ip_hash;
}

上面的配置和一般的负载均衡没有什么不一样,唯一要注意的是要配置ip_hash,为什么呢?因为使用断点续传的时候,文件是分块上传的,如果不是ip_hash的话,有可能会前面几片被上传到A服务器,后面几片被上传到B服务器,那么这样子文件就不是完整的了,因此需要注意这个问题。

到此这篇关于Nginx反向代理至go-fastdfs案例讲解的文章就介绍到这了,更多相关Nginx反向代理至go-fastdfs内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:nginx反向代理配置去除前缀案例教程nginx作grpc的反向代理踩坑总结Nginx反向代理配置的全过程记录Nginx反向代理多个服务器的实现方法本地通过nginx配置反向代理的全过程记录nginx 反向代理之 proxy_pass的实现nginx反向代理时如何保持长连接Nginx的反向代理实例详解

  • 本文相关:
  • nginx,apache的alias和认证功能
  • nginx部署.net core站点的方法
  • nginx http重定向https配置说明
  • nexus使用nginx代理实现支持https协议
  • nginx源码安装的方法步骤
  • nginx 负载均衡是什么以及该如何配置
  • nginx服务器进程数设置和利用多核cpu的方法
  • 利用nginx如何匹配多个条件
  • nginx对http请求处理的各个阶段详析
  • 为何要小心nginx的add_header指令详解
  • 请教Nginx反向代理域名后反斜杠的问题
  • nginx反向代理后,浏览器直接去反向代理的ip获取资源吗?
  • nginx+lamp(nginx反向代理web服务)可以为公司带来什么好处
  • nginx反向代理root 一定要配置吗
  • nginx反向代理ODL,网站能访问,但是不能交互,有没有大神遇到...
  • 谁能解释一下nginx反向代理是什么意思?
  • nginx 反向代理后为什么访问php文件 会提示404
  • nginx反向代理可以配防火墙吗
  • Nginx 反向代理为什么可以提高网站性能
  • 如何可以在nginx反向代理的情况下过滤掉源站的cookie
  • 如何设置Nginx反向代理,我们公司现在要找个服务器做反向代理...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全星外虚拟主机华众虚拟主机linuxwin服务器ftp服务器dns服务器tomcat nginxzabbix云和虚拟化服务器其它首页服务器nginx反向代理配置去除前缀案例教程nginx作grpc的反向代理踩坑总结nginx反向代理配置的全过程记录nginx反向代理多个服务器的实现方法本地通过nginx配置反向代理的全过程记录nginx 反向代理之 proxy_pass的实现nginx反向代理时如何保持长连接nginx的反向代理实例详解nginx,apache的alias和认证功能nginx部署.net core站点的方法nginx http重定向https配置说明nexus使用nginx代理实现支持https协议nginx源码安装的方法步骤nginx 负载均衡是什么以及该如何配置nginx服务器进程数设置和利用多核cpu的方法利用nginx如何匹配多个条件nginx对http请求处理的各个阶段详析为何要小心nginx的add_header指令详解nginx提示:500 internal servernginx 多站点配置方法集合权限问题导致nginx 403 forbiddenginx服务器的反向代理proxy_pasnginx fastcgi错误primary scripnginx 403 forbidden的解决办法详解nginx服务器中配置超时时间的详解nginx upstream 配置和作用nginx伪静态配置和常用rewrite伪nginx的超时timeout配置详解nginx基础学习之realip模块的使用方法nginx服务器中用于生成缩略图的模块配置教如何利用nginx防止ip地址被恶意解析详解nginx下让wordpress支持固定链接的伪静态nginx 负载均衡算法及故障转移解析基于xen的vps ubuntu+nginx+php安装教程利用nginx + fastcgi实现图片识别服务器nginx 代理与负载均衡详解nginx 负载均衡是什么以及该如何配置nginx配置location方法总结
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved