Скачать файл по временной ссылке с помощью Minio и nginx

Я генерирую URL-адрес файла с помощью Minio и возвращаюсь для RestController с 302 HttpCode, но мне нужно использовать внешний адрес с местоположением Nginx. Временный URL-адрес Minio имеет заголовок X-Amz-Signature, а URL-адрес службы содержится в подписи, поэтому я не могу перенаправить пользователя с помощью nginx. Например: хост: минио-хост порт: мини-порт ведро: файл имя файла: 333/test.jpg

URL-адрес 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? Я запустил minio и nginx в докере

Я попытался отключить изменение заголовка в nginx

Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
0
0
114
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня были похожие проблемы на локалке.

Решение 1 заключается в том, что вам нужно создать presignedUrl через nginx с вашим общедоступным URL-адресом, а не через одну из сетей докеров.

Решение 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%20miniclient .

Последний. Я использовал образец 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 минио.локальный

а затем используйте пользовательский интерфейс с Http://minio.local:9001

Это должно сгенерировать правильный presignedURL.

Если все работает нормально, вы можете создать установку с несколькими узлами и использовать nginx в качестве балансировщика нагрузки.

Привет, не могли бы вы также проголосовать за ответ, пожалуйста. Рад, что смог тебе помочь.

Ralle Mc Black 10.01.2023 12:44

Другие вопросы по теме