Я пытаюсь настроить собственный 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. Это ОЧЕНЬ доступные варианты.