Saqlash va zaxira nusxalar

S3’ni Nginx orqali proksilash

1 daqiqa o'qish

Bucket oldidagi Nginx proksi fayllarni oʻz domeningizdan (masalan, https://cdn.example.com/...) tarqatish, ularni serverda keshlash va S3 xizmat sarlavhalarini yashirish imkonini beradi.

Tayyorgarlik

  • Nginx oʻrnatilgan VM va uning ommaviy IP manziliga yoʻnaltirilgan domen;
  • tarqatmoqchi boʻlgan fayllaringizga ommaviy oʻqish huquqi — Bucket Policy ga qarang.

Nginx konfiguratsiyasi

/etc/nginx/conf.d/s3-proxy.conf faylini yarating. cdn.example.com ni oʻz domeningizga, my-bucket ni esa bucket nomiga almashtiring:

proxy_cache_path /var/cache/nginx/s3 levels=1:2 keys_zone=s3cache:10m
                 max_size=10g inactive=7d use_temp_path=off;

server {
    listen 80;
    server_name cdn.example.com;

    location / {
        limit_except GET HEAD { deny all; }

        proxy_pass https://s3.uzcstorage.uz/my-bucket/;
        proxy_set_header Host s3.uzcstorage.uz;
        proxy_ssl_server_name on;
        proxy_set_header Authorization "";

        proxy_hide_header x-amz-id-2;
        proxy_hide_header x-amz-request-id;
        proxy_hide_header x-rgw-object-type;
        proxy_hide_header Set-Cookie;
        proxy_ignore_headers Set-Cookie;

        proxy_cache s3cache;
        proxy_cache_valid 200 304 24h;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

Konfiguratsiyani tekshiring va Nginx’ni qayta yuklang:

sudo nginx -t && sudo systemctl reload nginx

HTTPS sertifikatini oling, masalan, Let’s Encrypt’dan:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d cdn.example.com

Tekshiring: curl -I https://cdn.example.com/public/logo.png. Takroriy soʻrovda X-Cache-Status: HIT sarlavhasi fayl keshdan berilganini koʻrsatadi.

Maslahat

VM xavfsizlik devorida 80 va 443 portlarini oching. Xavfsizlik devori ga qarang.

Maslahat

Shuningdek qarang: