Я генерирую 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
У меня были похожие проблемы на локалке.
Решение 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 в качестве балансировщика нагрузки.
Привет, не могли бы вы также проголосовать за ответ, пожалуйста. Рад, что смог тебе помочь.