Проксирование S3 через Nginx позволяет использовать ваш сервер в качестве посредника между клиентами и S3-хранилищем, предоставляя множество преимуществ. Вы можете скрыть прямой доступ к S3, обеспечить контроль кэширования для оптимизации трафика, настроить изменение заголовков для гибкой работы с запросами, а также ограничить доступ к контенту. Кроме того, прокси помогает объединить доступ к нескольким сервисам через единый домен, минимизировать затраты на трафик благодаря локальному кэшированию и вести детальное логирование запросов для анализа.
Установка Nginx
Для начала установим Nginx, если он ещё не установлен:
После установки проверьте, что Nginx запущен, с помощью команды:
Если сервис не запущен, активируйте его:
Настройка доступа к бакету
Для работы проксирования ваш бакет должен быть публичным или иметь настроенный доступ для IP-адреса вашего сервера.
Чтобы открыть доступ к бакету с IP сервера, задайте политику бакета с помощью AWS CLI. Для этого создайте файл bucket-policy.json с содержимым:
Укажите параметры:
имя_бакета— имя вашего бакета.IP_адрес_сервера— внешний IP-адрес вашего сервера.
Примените политику к бакету:
Если нужно разрешить доступ нескольким IP-адресам, добавьте их в виде массива в поле IpAddress, например:
Теперь ваш бакет будет доступен только для указанных IP-адресов.
Базовая настройка
Создайте конфигурационный файл для проксирования. Например, создадим файл s3_proxy.conf в каталоге /etc/nginx/sites-available:
Настройте конфигурацию следующим образом:
Сохраните файл и создайте символическую ссылку на него в каталоге sites-enabled:
Проверьте конфигурацию на наличие ошибок:
Если ошибок нет, перезапустите Nginx:
Теперь файлы из бакета будут доступны по адресу http://ваш_домен/имя_файла.
Установка SSL-сертификата для прокси
Для повышения безопасности настройте HTTPS с помощью Certbot. Установите Certbot и плагин для Nginx:
Сгенерируйте и установите сертификат:
Certbot автоматически обновит конфигурацию Nginx для работы по HTTPS. После успешного выполнения команда certbot активирует сертификат, и прокси начнёт работать через защищённое соединение.