本次教程使用的是单机minio进行演示,集群minio也和这个差不多。
按照这个教程,可以避开nginx代理minio之后,只能访问文件,但是通过预签名url上传文件就会报SignatureDoesNotMatch的坑
暂定如下:
- 你已经下载好minio
- minio服务监听端口:9010
- minio控制台端口:9011
- 用来外部访问minio的域名:https://oss.aaa.com
nginx配置
需要修改的地方
- 自己服务器用的是http还是https
- server_name改为自己想的域名
- proxy_set_header Host的值
- 两处proxy_pass的值
# minio
server {
# SSL(https) 配置
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate fullchain.cer的全路径;
ssl_certificate_key certificate_key的全路径;
# 非SSL(http) 配置,这里是http配置,根据自己情况,选上面或者下面一种,nginx没有配https就选下面这种
listen 80;
# nginx监听的域名
server_name oss.aaa.com;
# 以下除了ip地址和端口号,其他配置都是参考官方文档
ignore_invalid_headers off;
client_max_body_size 2048m;
proxy_buffering off;
proxy_request_buffering off;
location / {
# 这里的值是 minio服务监听ip:minio服务监听端口
proxy_set_header Host 10.0.0.7:9010;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
# 这里的值是 http://minio服务监听ip:minio服务监听端口
proxy_pass http://10.0.0.7:9010;
}
# 以下是minio客户端配置
location /ui/ {
rewrite ^/ui/(.*) /$1 break;
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;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 300;
# To support websockets in MinIO versions released after January 2023
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
# Uncomment the following line to set the Origin request to an empty string
# proxy_set_header Origin '';
chunked_transfer_encoding off;
# 这里的值是 http://minio服务监听ip:minio服务监听端口
proxy_pass http://10.0.0.7:9011; # This uses the upstream directive definition to load balance
}
}
创建一个运行minio的shell脚本文件
创建并编辑文件
vi run_minio.sh
文件的内容
#!/bin/bash
export MINIO_ROOT_USER=minio控制台的登录账号
export MINIO_ROOT_PASSWORD=minio控制台的登录密码
# 以下,如果nginx没有配置https,那就写http
# 外部通过域名访问minio的地址
export MINIO_SERVER_URL="https://oss.aaa.com"
# minio控制台文件路径
export MINIO_BROWSER_REDIRECT_URL="https://oss.aaa.com/ui"
/usr/local/minio/minio server /data/minio/data1 --address "10.0.0.7:9010" --console-address ":9011"
给文件添加可执行权限
chmod +x run_minio.sh
执行文件就可以运行minio了
sh run_minio.sh