web-dev-qa-db-ja.com

セルフホストCDN用のhtaccessファイルの構成

自分のサイトにセルフホストのcdnを設定しようとしていますが、htaccessファイルのルールに問題があり、機能させることができません。

現在、CDNとして機能するftpサーバーのファイルシステム構造は次のとおりです。

/
www/
www/htaccess
www/index.html
www/cdn/*
incremental/*
full/*

私の.htaccessは今このようになっています:

Options All -Indexes

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

#This snippet basically stops anyone viewing any file on your site that begins with "hta", this will protect it and make it somewhat safer.
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

<Files /cdn>
   Options +Indexes
   Satisfy Any
   Allow from all
</Files>

インクリメンタルおよびフルではメインサーバーのバックアップがあるため、cdnフォルダーへのアクセスを許可し、他のフォルダーへの他のアクセスを禁止したいと思います。

私はこの動作を実現するためのルールを探していましたが、何も機能しません。

Cdnフォルダーでインデックスを許可する必要がありますか?

よろしくお願いします(そして私の英語でごめんなさい)

1
ElBaulP

ぎくしゃくすることではありませんが、これはCDNを構築しているようにはまったく聞こえません。 CDNの全体的な概念は、ユーザーに最も近いノードからユーザーコンテンツを配信することと、ユーザーがインターネットを介して1つのボックスに移動する必要があることにかかっています。

この「CDN」の概念が実際には適切でないときに追加しているため、調査で何をすべきかを見つけるのに苦労している可能性があります。

バックアップをWebアクセス可能なフォルダーから移動するという以前のアドバイスをエコーし​​ます!

あなたが達成しようとしていると私が信じていることを考えると、特定のFQDNの要求をフォルダーにポイントする個別のvhostをセットアップすることをお勧めします。これにより、構成をより細かく制御でき、特定のドメインでのみデータを利用できるようになります。したがって、Apache2/conf.dディレクトリに次のような新しいファイル(myconfig.conf、実際には何でも)を追加します。

<VirtualHost *:80>
DocumentRoot /mnt/www/DOMAIN_NAME/cdn
ServerName cdn.DOMAIN_NAME
</VirtualHost>

もちろん、ドキュメントルートには何でも使用できますが、上記は私の個人的なスタイルです。ディレクトリパス/ mnt/www/DOMAIN_NAME/cdnを作成し、DOMAIN_NAMEを使用しているものに置き換えます。その後、cdn.DOMAIN_NAMEを押すと、/ mnt/www/DOMAIN_NAME/cdnディレクトリ内のファイルのみが提供されます。明らかに、これには、使用されるDOMAIN_NAMEのcdnサブドメインがこのボックスを指すようにDNSを調整する必要があります。

編集:新しい.confファイルを追加した後、Apacheを再起動することを忘れないでください!

うまくいけば、これが役立つでしょう。真のCDNが必要な場合でも、DIYソリューションではなく、s3/cloudfrontやRackspaceCloudfilesなどのサービスを使用することをお勧めします。彼らは非常に手頃なオプションです。

1
Matt Surabian