• 售前

  • 售后

热门帖子
入门百科

Nginx反向署理至go-fastdfs案例解说

[复制链接]
123456790 显示全部楼层 发表于 2021-8-14 14:19:50 |阅读模式 打印 上一主题 下一主题
背景
go-fastdfs是支持http协议的一款分布式文件系统,在一般的项目中,很少是直接将文件系统的地址暴露出来的,大多数都会通过nginx等软件进行反代已往,由于我司的业务和网络环境场景相对特殊,由公网部门(公有云)和内网部门(私有云)构成的混合云网络体系,公有云重要就是作为一个出口和入口以及运行一些审计认证等应用,对上游哀求进行处置惩罚,从而淘汰私有云的处置惩罚次数,提拔性能。那么也正是由于如许,在公网的环境下,要访问到私有云提供的服务则必须利用反向署理。同样原理,对于文件系统的访问也云云,如何在nginx中进行配置才能使得外部的网络哀求可以反向署理到go-fastdfs呢?本文将渐渐叙述。
一般配置
在一般的环境下,熟悉nginx的朋侪都知道,假如须要配置反向署理,直接写一个location上下文和proxy模块即可,假如须要自定义前缀,利用一个rewrite模块即可。简朴例子如下:
  1. location ~ /dfs/group([0-9]) {
  2.         proxy_pass http://localhost:8080;
  3.         rewrite ^/dfs/(.*)$ /$1 break;
  4.         proxy_set_header Host $host:$server_port;
  5.         proxy_set_header X-Real-IP $remote_addr;
  6.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  7. }
复制代码
到这里,一般的反代配置就算是可以了,那么对于go-fastdfs而言是否可以了呢?对于go-fastdfs一般上传是可以了,但是呢,对于利用了tus做断点续传照旧不敷,为什么呢?由于tus服务端会返回301重定向,而且须要携带肯定的哀求头已往,以是还须要特别的设置一下。
支持Tus的反代配置
假如须要做tus的反代,要支持301重定向Location的重写还要支持肯定的哀求头转发,那该如何配置呢?请参考下面的配置
l
  1. ocation ~ /dfs1/group([0-9]) {
  2.         access_log logs/dfs/access.log main;
  3.         error_log logs/dfs/error.log error;
  4.         rewrite ^/dfs1/(.*)$ /$1 break;
  5.         proxy_pass http://localhost:8051;
  6.         # Disable request and response buffering
  7.         proxy_request_buffering off;
  8.         proxy_buffering off;
  9.         proxy_http_version 1.1;
  10.         proxy_set_header Host $host:$server_port;
  11.         proxy_set_header X-Real-IP $remote_addr;
  12.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  13.         # 如果server_name不是公网域名,这个地方可以设置成ip
  14.         proxy_set_header X-Forwarded-Host $hostname;
  15.         proxy_set_header X-Forwarded-Proto $scheme;
  16.         proxy_set_header Upgrade $http_upgrade;
  17.         proxy_set_header Connection "upgrade";
  18.         # 因为使用了前缀加rewrite,所以要修改返回的Location加上反向代理的前缀
  19.         proxy_redirect ~^(.*)/group([0-9])/big/upload/(.*) /dfs/group$2/big/upload/$3;
  20.         client_max_body_size 0;
  21. }
复制代码
上面要留意一下就是proxy_redirect和client_max_body_size这两个配置,第一个配置是由于tus服务端返回的重定向Location是不会携带自定义前缀的,因此须要自己到场自定义的前缀,我这里是/dfs,假如是别的,更换下就好。第二个就是client_max_body_size了,这个是设置为0表示不管上传多大的文件都不会报request too large的问题,直接转发已往,假如须要设置,那么请设置大于即是chunkSize的数字。什么是chunkSize?就是tus客户端分块上传的时间,每一块的巨细,详细请参考官方文档。
负载平衡配置
在配置了集群服务器的环境下,上传或者下载如何进行负载平衡呢?利用nginx做了反代,共同upstream模块就可以实现了,详细参考如下配置
  1. upstream dfs_stream {
  2.         server host1:port;
  3.         server host2:port;
  4.         ip_hash;
  5. }
复制代码
上面的配置和一般的负载平衡没有什么不一样,唯一要留意的是要配置ip_hash,为什么呢?由于利用断点续传的时间,文件是分块上传的,假如不是ip_hash的话,有大概会前面几片被上传到A服务器,后面几片被上传到B服务器,那么如许子文件就不是完整的了,因此须要留意这个问题。

到此这篇关于Nginx反向署理至go-fastdfs案例讲解的文章就先容到这了,更多相关Nginx反向署理至go-fastdfs内容请搜索脚本之家以前的文章或继续欣赏下面的相关文章希望各人以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作