Серия «MinIO на VPS»: Docker Compose → Nginx → SSL Certbot
Источники: Nginx Docs, MinIO — Nginx proxy.
Схема
| Домен | Backend | Назначение |
|---|---|---|
s3.example.com | 127.0.0.1:9000 | S3 API |
minio-console.example.com | 127.0.0.1:9001 | Web Console |
MinIO должен быть запущен локально (Ubuntu или Docker).
Шаг 1. Установка Nginx
apt update && apt install -y nginx
systemctl enable --now nginxШаг 2. S3 API (порт 9000)
cat > /etc/nginx/sites-available/minio-api << 'EOF'
upstream minio_api {
```bash
server 127.0.0.1:9000;
keepalive 32;}
server {
listen 80;
server_name s3.example.com;
client_max_body_size 0;
proxy_buffering off;
proxy_request_buffering off;
location / {
proxy_set_header Host $http_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;
proxy_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass http://minio_api;
}} EOF
# Шаг 3. Web Console (порт 9001)
```bash
cat > /etc/nginx/sites-available/minio-console << 'EOF'
upstream minio_console {
```bash
server 127.0.0.1:9001;
keepalive 8;}
server {
listen 80;
server_name minio-console.example.com;
location / {
proxy_set_header Host $http_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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_pass http://minio_console;
}} EOF
# Шаг 4. Активация
```bash
ln -sf /etc/nginx/sites-available/minio-api /etc/nginx/sites-enabled/
ln -sf /etc/nginx/sites-available/minio-console /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginxШаг 5. Переменные окружения MinIO (за proxy)
Если MinIO за HTTPS-терминацией, укажите в /etc/default/minio или docker-compose:
# Для binary install добавьте в MINIO_OPTS или EnvironmentFile:
# MINIO_SERVER_URL=https://s3.example.com
# MINIO_BROWSER_REDIRECT_URL=https://minio-console.example.comДля Docker Compose:
environment:
MINIO_SERVER_URL: https://s3.example.com
MINIO_BROWSER_REDIRECT_URL: https://minio-console.example.comПроверка
curl -I -H "Host: s3.example.com" http://127.0.0.1/minio/health/liveПосле DNS A-записей на IP VPS:
curl -f http://s3.example.com/minio/health/live && echo OKДальше
SSL через Certbot — HTTPS для обоих доменов.
Ошибки
| Проблема | Причина |
|---|---|
| 413 Request Entity Too Large | Увеличьте client_max_body_size 0 |
| Console не грузится | Нужны заголовки Upgrade / WebSocket |
| Signature mismatch | Неверный Host / нужен HTTPS — см. troubleshooting |
VPS на Simple-Server
Для развёртывания на production возьмите VPS/VDS с Ubuntu 22.04: root по SSH, NVMe и канал от 500 Мбит/с.