使用Minio和nginx通过临时URL下载文件

qnyhuwrf  于 2022-12-17  发布在  Nginx
关注(0)|答案(1)|浏览(1040)

我生成的文件的网址由迷你和302 HttpCode的RestController返回,但我需要使用外部地址与Nginx位置。迷你临时网址有X-Amz-签名头和服务的网址包含在签名中,这就是为什么我不能通过nginx重定向用户。例如:主机:小型主机端口:微型端口存储桶:文件名:333/test.jpg
minio的网址:http://minio-host:minio-port/file/333/test.jpg但是,我想使用nginx位置(http://my-host/minio)如果我使用nginx,我无法获取文件,因为X-Amz-Signature包含host = http://minio-host:minio-port我应该怎么做才能使用nginx?我在docker中启动了minio和nginx
我尝试禁用nginx中的标头更改

kt06eoxx

kt06eoxx1#

我在本地也有类似的问题。
解决方案1,是你需要通过nginx创建presignedUrl与你的公共网址,而不是通过一个对接网络.
解决方案2,通过mc客户端生成链接。这也起作用了。但是你很难通过mc生成每一个链接,这取决于你在做什么。
你也可以参考我对类似问题的回答:https://stackoverflow.com/questions/74656068/minio-how-to-get-right-link-to-display-image-on-html/74717273#74717273:%7E:text=If%20you%20have%20Minio%20running%20in%20a%20container%2C%20it%20is%20always%20a%20mess%20with%20127.0.0.1%20or%20localhost:~:text=Try%20to%20generate%20the%20link%20with%20the%20minioclient。
最后,我用了一个docker-compose的例子,使用了quay.io的图片和nginx。这里甚至连通过浏览器用户界面创建的链接都不起作用。
这个问题我解决了使用bitnami/minio图像。
试试这个:

version: '3.7'

services:
   minio: 
    container_name: minio
    image: bitnami/minio
    ports:
      - '9000:9000'
      - '9001:9001'
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
      
    healthcheck:
      test: ["CMD", "curl", "-f", 
      "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
    networks:
      - mynetwork
    volumes:
      - miniodata:/data

networks:
  mynetwork
volumes:
  miniodata:

您还可以在主机上的hosts文件中放置一个条目。
127.0.0.1 迷你.本地
然后将UI与www.example.com一起使用Http://minio.local:9001
这将生成正确的presignedURL。
如果一切正常,您可以创建一个多节点安装,并使用nginx作为负载平衡器。

相关问题