Назад | Перейти на главную страницу

Настройка файла htaccess для собственной CDN

Я пытаюсь настроить собственный cdn для своего сайта, но у меня проблемы с правилами в файле htaccess, и я не могу заставить его работать.

На данный момент ftp-сервер, который будет действовать как CDN, имеет следующую структуру файловой системы:

/
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?

С уважением и заранее спасибо (и извините за мой английский)

Не быть придурком, но это совсем не похоже на создание CDN. Вся концепция CDN зависит от доставки контента ваших пользователей из ближайшего к ним узла, а не от того, что вашим пользователям придется тащиться через Интернет к одному ящику.

Возможно, в вашем исследовании у вас возникнут проблемы с выяснением того, что делать, потому что вы добавляете концепцию «CDN», когда это действительно неуместно.

Я повторю предыдущий совет по перемещению резервных копий из папки, доступной в Интернете!

Учитывая то, что, я считаю, вы пытаетесь выполнить, я бы посоветовал вам настроить отдельные vhosts, которые указывают запросы для данного FQDN в папку. Это даст вам больше контроля над конфигурацией и обеспечит доступность данных только для определенных доменов. Итак, вы должны добавить новый файл (myconfig.conf, действительно что угодно) в свой каталог apache2 / conf.d, который выглядел бы примерно так:

<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. Очевидно, это требует некоторых настроек DNS, чтобы убедиться, что субдомен cdn используемого DOMAIN_NAME указан в этом поле.

РЕДАКТИРОВАТЬ: не забудьте перезапустить apache после добавления нового файла .conf!

Надеюсь, это поможет. Хотя, если вам нужен настоящий CDN, я бы посоветовал вам использовать такую ​​услугу, как s3 / cloudfront или Rackspace Cloudfiles, а не решение DIY. Это ОЧЕНЬ доступные варианты.