最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx代理minio的實現(xiàn)示例

 更新時間:2025年05月21日 10:48:54   作者:老範(fàn)吖  
本文介紹通過Nginx代理MinIO實現(xiàn)預(yù)簽名URL的配置方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、nginx的配置(代理MinIO并支持預(yù)簽名URL)

這里是我的項目的整個配置文件

server {
    # 監(jiān)聽的端口
    listen 15743;
    # 監(jiān)聽地址
    server_name 172.16.49.10;
    #allow 127.0.0.1;

    # 設(shè)定本虛擬主機(jī)的訪問與錯誤日志
    access_log /home/project/nginx/nginx-access.log;
    error_log /home/project/nginx/nginx-error.log;

    # 設(shè)置整個 server 的最大請求體大小為 10MB
    client_max_body_size 100M;

  location / {
        proxy_pass http://172.16.49.10:8888; # 代理到Java應(yīng)用的地址和端口
        proxy_set_header Host $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;
    }

	# 文件上傳代理路徑
	location /minio-upload/ {
		rewrite ^/minio-upload/(.*)$ /$1 break;  # 關(guān)鍵路徑重寫
		
		proxy_pass http://172.16.49.10:9000;
		
		# 必須透傳的請求頭
		proxy_set_header Host 172.16.49.10:9000;  # 必須與MinIO服務(wù)地址完全一致
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_set_header Authorization $http_authorization;  # 傳遞簽名頭
		
		# 支持大文件上傳
		client_max_body_size 0;
		
		# 優(yōu)化代理連接
		proxy_http_version 1.1;
		proxy_connect_timeout 300;
		proxy_read_timeout 300;
		proxy_send_timeout 300;
		chunked_transfer_encoding off;
	}
}

二、Java生成預(yù)簽名URL(Spring Boot示例)

1. 添加依賴(pom.xml)

<!-- Minio 文件存儲 -->
<dependency>
	<groupId>io.minio</groupId>
	<artifactId>minio</artifactId>
	<version>8.2.1</version>
</dependency>

2.配置類

配置信息(application.yml)

minio:
  url: http://172.16.49.10:9000
  accessKey: minioadmin
  secretKey: minioadmin
import io.minio.MinioClient;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * Minio 配置信息
 */
@Slf4j
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioConfig
{
    /**
     * 服務(wù)地址
     */
    private String url;

    /**
     * 用戶名
     */
    private String accessKey;

    /**
     * 密碼
     */
    private String secretKey;

    @Bean
    public MinioClient getMinioClient()
    {
        log.info("連接MinioClient");
        return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
    }
}

3. 生成預(yù)簽名URL的服務(wù)類

import io.minio.GetPresignedObjectUrlArgs;
import io.minio.MinioClient;
import io.minio.http.Method;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

@Service
public class MinioService
{
    @Resource
    private MinioClient minioClient;

    @Resource
    private MinioTemplate minioTemplate;

    /**
     * 生成PUT方法預(yù)簽名URL(有效期1小時)
     *
     * @param bucket 存儲桶名稱
     * @param object 對象路徑(如:uploads/device1/20240326.zip)
     */
    public String generateUploadUrl(String bucket, String object)
    {
        try
        {
            minioTemplate.existBucket(bucket);
            String string = minioClient.getPresignedObjectUrl(
                    GetPresignedObjectUrlArgs.builder()
                            .method(Method.PUT)
                            .bucket(bucket)
                            .object(object)
                            .expiry(1, TimeUnit.HOURS)
                            .build()
            );

            // 替換為Nginx代理地址
            return string.replace("http://172.16.49.10:9000", "http://172.16.49.10:15743/minio-upload");
        } catch (Exception e)
        {
            throw new RuntimeException("生成預(yù)簽名URL失敗", e);
        }
    }
}

4. minio工具類

我只需要判斷桶存在。其他方法可以從網(wǎng)上找替換掉這個工具類

import io.minio.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class MinioTemplate
{

    @Resource
    private MinioClient minioClient;


    /**
     * 判斷桶是否存在,如果存在返回true,如果不存在返回false
     *
     * @param bucketName
     * @return
     */
    @SneakyThrows
    public Boolean existBucket(String bucketName)
    {
        boolean exist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
        if (!exist)
        {
            makeBucket(bucketName);
        }
        return true;

    }

    /**
     * 創(chuàng)建桶
     *
     * @param bucketName
     * @return
     */
    @SneakyThrows
    public void makeBucket(String bucketName)
    {
        minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
    }
}

5. 調(diào)用示例(Controller)

@RestController
@RequestMapping("/api")
public class FileController {
    
    @Autowired
    private MinioService minioService;
?
    @GetMapping("/presigned-url")
    public ResponseEntity<String> getPresignedUrl(@RequestParam String bucket, @RequestParam String objectPath) {
        String url = minioService.generateUploadUrl(bucket, objectPath);
        return ResponseEntity.ok(url);
    }
}

我的后端端口使用nginx代理15743,獲取預(yù)簽名URL:

GET
http://172.16.49.10:15743/api/presigned-url?bucket=12312&objectPath=121211.txt

在這里插入圖片描述

上傳文件:根據(jù)返回的URL,直接調(diào)用

PUT
http://172.16.49.10:15743/minio-upload/12312/121211.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20250326%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250326T064808Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=2633bb91c9bc9094fd10570e023ca990395b85f912a8cbd3d31a36904124265a

在這里插入圖片描述

到此這篇關(guān)于nginx代理minio的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)nginx代理minio內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Nginx?Location匹配規(guī)則的具體使用

    Nginx?Location匹配規(guī)則的具體使用

    Nginx?location指令用于配置請求的處理方式,包括精確匹配、最長前綴匹配、正則表達(dá)式匹配等,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • 騰訊云服務(wù)器記錄nginx配置cloudflare證書的實現(xiàn)步驟

    騰訊云服務(wù)器記錄nginx配置cloudflare證書的實現(xiàn)步驟

    本文主要介紹了騰訊云服務(wù)器記錄nginx配置cloudflare證書的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • NGINX啟用Gzip壓縮的實現(xiàn)(優(yōu)化前端資源加載速度)

    NGINX啟用Gzip壓縮的實現(xiàn)(優(yōu)化前端資源加載速度)

    本文分享了通過啟用NGINX的Gzip壓縮功能來優(yōu)化前端資源加載速度的實踐方案,該方案能有效減少網(wǎng)絡(luò)傳輸數(shù)據(jù)量,是提升Web性能的常用高效手段,感興趣的可以了解一下
    2026-05-05
  • Nginx搭建負(fù)載均衡及常見問題處理

    Nginx搭建負(fù)載均衡及常見問題處理

    Nginx作為一款高效的Web服務(wù)器和反向代理服務(wù)器,廣泛應(yīng)用于負(fù)載均衡場景中,本文將詳細(xì)介紹如何使用Nginx搭建負(fù)載均衡,包括基本概念、配置步驟、優(yōu)化策略及常見問題處理,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Windows下Nginx的啟動停止重啟等命令操作過程

    Windows下Nginx的啟動停止重啟等命令操作過程

    最近在window 上安裝了nginx ,對nginx 的操作不是很熟,故在此記錄一下常用操作,本文詳細(xì)介紹了Windows下Nginx的啟動,停止,重啟等命令,需要的朋友可以參考下
    2024-03-03
  • nginx實現(xiàn)tomcat動靜分離詳解

    nginx實現(xiàn)tomcat動靜分離詳解

    本篇文章主要介紹了nginx實現(xiàn)tomcat動靜分離詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • nginx日志格式分析以及修改詳解

    nginx日志格式分析以及修改詳解

    Nginx日志對于統(tǒng)計、系統(tǒng)服務(wù)排錯很有用,下面這篇文章主要給大家介紹了關(guān)于nginx日志格式分析以及修改的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • nginx如何實現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈

    nginx如何實現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈

    這篇文章主要為大家介紹了nginx實現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Nginx報404錯誤的詳細(xì)解決方法

    Nginx報404錯誤的詳細(xì)解決方法

    最近打開網(wǎng)站看看結(jié)果提示:nginx 404 not found,所以這篇文章主要給大家介紹了關(guān)于Nginx報404錯誤的簡單解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Centos7.x下Nginx安裝及SSL配置與常用命令詳解

    Centos7.x下Nginx安裝及SSL配置與常用命令詳解

    這篇文章主要介紹了Centos7.x下Nginx安裝及SSL配置與常用命令詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02

最新評論

闽清县| 莫力| 昌平区| 荆州市| 肥西县| 红河县| 彩票| 蛟河市| 涟水县| 梓潼县| 罗田县| 临西县| 三河市| 沽源县| 高州市| 广安市| 张家界市| 蓬安县| 都江堰市| 碌曲县| 衡山县| 金门县| 同仁县| 密山市| 金川县| 柞水县| 闽侯县| 晋江市| 玉田县| 太谷县| 平江县| 富蕴县| 泰州市| 天长市| 苍梧县| 玛曲县| 兰州市| 阿克陶县| 夏河县| 延庆县| 蒙阴县|