🅾️

Nginxリバースプロキシ + Cloudflare CDNで外部画像を配信する方法

に公開

はじめに

最近、NginxとCloudflareを活用して外部リソースをプロキシ配信する方法を紹介したいと思います。この方法を使うことで、自分のサーバーで直接リソースをホストすることなく、外部サイトの画像やファイルなどを安全かつ効率的に配信できます。さらに、Cloudflareを利用することで、CDNを使ってリソースの配信速度を向上させることができます。

Cloudflareの設定

  • Cloudflareアカウントを作成し、DNS設定にあなたのドメイン(例:cdn.example.co.jp)Aレコードを追加します。
  • ドメインをCloudflareのDNSサーバーに設定し、DNSがCloudflare経由で解決されるようにします。

Nginxの設定

server {
    listen 80;
    listen 443 ssl;
    server_name you.domain;


    ssl_certificate     path/to/your/certificate.crt;
    ssl_certificate_key path/to/your/certificate.key;

    resolver 1.1.1.1 8.8.8.8 valid=30s;

    location /proxy {
        set $target_url $arg_url;
        if ($target_url = "") { return 400 "Missing 'url' parameter"; }

        # 提取目标主机名
        if ($target_url ~* ^https?://([^/]+)) {
            set $target_host $1;
        }

        proxy_pass $target_url;
        proxy_set_header Host $target_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_ssl_server_name on;
        proxy_ssl_name $target_host;
    }
}

検証テスト

curl http://youdomain/proxy?url=https://www.ask-books.com/pcast/97580/97580.jpg

Discussion