官方文档地址:http://docs.minio.org.cn/docs/master/setup-nginx-proxy-with-minio

nginx参考网址:https://www.nginx.com/blog/enterprise-grade-cloud-storage-nginx-plus-minio/

标准的Root配置

server {
listen 80;
server_name example.com;
location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:9000;
}
}

注意:

  • 用你自己的主机名替换example.com。
  • 用你自己的服务名替换http://localhost:9000。
  • 为了能够上传大文件,在http上下文中添加client_max_body_size 10m;,只需按你的需求调整该值。默认值是1m,对大多数场景来说太低了。

非Root配置

 location ~^/files {
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_pass http://localhost:9000;
}

注意:

  • 用你自己的服务名替换http://localhost:9000。
  • 用所需的路径替换files。这不能是~^/minio,因为minio是minio中的保留字。
  • 所使用的路径(在本例中为files)按照惯例,应设置为minio所使用的存储桶的名称。
  • 可以通过添加更多类似于上面定义的location定义来访问其他存储桶。

使用Rewrite的非Root配置

以下location配置允许访问任何存储桶,但只能通过未签名的URL,因此只能访问公开的存储桶。

 location ~^/files {
proxy_buffering off;
proxy_set_header Host $http_host;
rewrite ^/files/(.*)$ /$1 break;
proxy_pass http://localhost:9000;
}

注意:

  • 用你自己的服务名替换http://localhost:9000。
  • 用所需的路径替换files。
  • 使用的存储桶必须是公开的,通常情况是可公开读和公开写。
  • 使用的网址必须是无符号的,因为nginx会更改网址并使签名无效。

多节点minio负载

upstream minio_servers {
server minio-server-1:9000;
server minio-server-2:9000;
} server {
listen 80;
server_name www.example.com; location / {
proxy_set_header Host $http_host;
proxy_pass http://minio_servers;
}
}

SSL/TLS

server {
listen 80;
server_name www.example.com;
return 301 https://www.example.com$request_uri;
} server {
listen 443 ssl;
server_name www.example.com; ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5; location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:9000;
}
}

缓存 Caching

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m
use_temp_path=off; server {
# ...
location / {
proxy_cache my_cache;
proxy_set_header Host $http_host;
proxy_pass http://localhost:9000;
}
}

限速 Throttling

server {
# ...
location /images/ {
limit_rate 200k;
# ...
}
}
limit_req_zone $binary_remote_addr zone=my_req_limit:10m rate=10r/s;

server {
# ...
location /images/ {
limit_req zone=my_req_limit burst=20;
# ...
}
}
limit_conn_zone $binary_remote_addr zone=my_conn_limit:10m;

server {
# ...
location /images/ {
limit_conn my_conn_limit 5;
# ...
}
}

实践操作

前提条件:在同一台主机上安装minio和nginx

操作:

1.该主机的/etc/hosts文件添加如下解析:

192.168.20.102 test.minio.com

2.nginx配置如下

# cat minio.conf
server {
listen 80;
server_name test.minio.com; location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:9000;
}
}

3.用浏览器访问网址:http//test.minio.com

地址跳转了

4.分享文件的地址还是ip

但是把分享链接中的ip换成域名后,是可以直接用浏览器访问的,中间没有跳转重定向

设置环境变量:export MINIO_DOMAIN=test.minio.com,或者把配置:MINIO_DOMAIN=test.minio.com写入到配置文件中,重启应用后查看分享链接显示的还是IP地址。

最后的操作

1.nginx配置中不代理9000端口,直接代理9001端口

server {
listen 80;
server_name test.minio.com; location / {
proxy_pass http://localhost:9001;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

这样一来,用浏览器访问就不会再跳转到域名:9001端口了,登录,web上传文件都可以

但是使用python SDK写这个域名访问,就会报错:S3 API Request made to Console port. S3 Requests should be sent to API port

使用域名访问分享的文件地址,请求是成功了,但是浏览器不显示图片

最后的结论,nginx配置中还是代理9000端口,访问域名跳转到域名:9001估计是跟minio版本有关系

通过docker官网上的镜像介绍,之前只有一个端口。现在有两个了,区分了Console和API两个服务的端口。原来都是共同使用9000,现在需要在启动命令中映射两个端口,然后指定哪个端口做哪项服务

为MinIO Server设置Nginx代理的更多相关文章

  1. 单机部署minio,设置Nginx代理,配置https(TLS)访问

    安装 下载地址:https://dl.min.io/ # 创建目录 mkdir -p /usr/local/minio/{data,bin,etc} # 下载minio wget https://dl ...

  2. 温故而知新 phpstudy 设置 nginx 代理

    nginx.conif 找到 server 关键字配置 server { listen ; server_name localhost; #charset koi8-r; #access_log lo ...

  3. nginx代理yum

    适用场景:有多台服务器,但是只有1台服务器可以出公网,此时即可使用如下方式,进行yum代理,解决内网服务器不能yum的尴尬. 一.首先需要把/etc/yum.repos.d下的文件备份到bak,然后留 ...

  4. 第十四章 nginx代理配置

    一.nginx代理 1.常见模式 1.常见模式:1)正向代理2)反向代理​2.区别1)区别在于形式上服务的"对象"不一样2)正向代理代理的对象是客户端,为客户端服务3)反向代理代理 ...

  5. go 通过nginx代理后获取用户ip

    go 如果使用自己的服务器,可以直接使用 net/http 来获取 func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Re ...

  6. Nginx代理常用参数

    目录 一:Nginx代理常用参数 1.添加发往后端服务器的请求头信息 二:参数案例 1.lb01配置文件 2.web01 web02 web服务器 3.测试 4.重启 5.DNS域名解析 6.网址测试 ...

  7. 【Nginx】nginx 代理 Haproxy 怎么设置?

    由于Haproxy是通过 url 正则匹配 识别 的,nginx代理到 haproxy需要设置 proxy_set_header Host 为 haproxy的目标 url 直接上配置 upstrea ...

  8. 安装Nginx并为node.js设置反向代理

    最近看了反向代理和正向代理的东西,想到自己的node.js服务器是运行在3333端口的,也没有为他设置反向代理,node.js项目的一些静态文件是完全可以部署在Nginx上,以减少对node.js的请 ...

  9. 使用Nginx压缩文件、设置反向代理缓存提高响应速度

    Gzip压缩: 最开始,这个竟然要6m多(大到不寻常),响应的速度3分多钟. 所以先对返回的文件进行gzip压缩.判断返回的资源是否有使用gzip压缩,观察响应头部里面,如果没有 Content-En ...

随机推荐

  1. 攻防世界MISC进阶区--39、40、47

    39.MISCall 得到无类型文件,010 Editor打开,文件头是BZH,该后缀为zip,打开,得到无类型文件,再改后缀为zip,得到一个git一个flag.txt 将git拖入kali中,在g ...

  2. CTCLoss如何使用

    CTCLoss如何使用 目录 CTCLoss如何使用 什么是CTC 架构介绍 一个简单的例子 CTC计算的推导 总概率\(p(z|x)\) 路径的含义 路径概率\(p(\pi|x)\) 什么是\(\m ...

  3. shell脚本处理二进制数据

    正确处理二进制数据 正确处理二进制数据必须保证以下三个环节是二进制安全(Binary Safe)的: 从文件读取至内存: 处理数据过程中: 内存写入至文件. 那么二进制安全是什么?通俗来说就是不会特殊 ...

  4. Qucs初步使用指南(不是multism)

    众所周知,Multism是一款强大的电路仿真软件,学习电子电路的同学都会接触到. 但是,这软件不支持Linux.(这就很魂淡了啊) 我的主力机是Linux,不能进行电路仿真成了学习的最大障碍. 使用w ...

  5. HDFS、Yarn、Hive…MRS中使用Ranger实现权限管理全栈式实践

    摘要:Ranger为组件提供基于PBAC的鉴权插件,供组件服务端运行,目前支持Ranger鉴权的组件有HDFS.Yarn.Hive.HBase.Kafka.Storm和Spark2x,后续会支持更多组 ...

  6. 2022-07-12 第六组 润土 JavaScript02学习笔记

    1.循环语句 for循环: for(let i=0;i<10;i++){循环体} while循环: while(i<10){循环体}: do... while...循环: do{循环体}w ...

  7. Apache Hudi数据跳过技术加速查询高达50倍

    介绍 在 Hudi 0.10 中,我们引入了对高级数据布局优化技术的支持,例如 Z-order和希尔伯特空间填充曲线(作为新的聚类算法),即使在经常使用过滤器查询大表的复杂场景中,也可以在多个列而非单 ...

  8. MySQL 啥时候用表锁,啥时候用行锁?

    大家好,我是树哥. MySQL Innodb 的锁可以说是执行引擎的并发基础了,有了锁才能保证数据的一致性.众所周知,我们都知道 Innodb 有全局锁.表级锁.行级锁三种,但你知道什么时候会用表锁, ...

  9. js for和while两种99乘法表

    <script type="text/javascript"> for(var i=1; i<=9; i++) { for(var j=1; j<=i;j+ ...

  10. Python 阿里云盾滑块验证

    本文仅供学习交流使用,如侵立删! 记一次阿里云盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.pyautogui 分析 最近在做中国庭审公开网数据分析的时 ...