VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Делаем vBulletin быстрее посредством CDN (Content Delivery Network)
9
Приветствую всех, не так давно наткнулся на одну отличную статью, кстати удивлен, почему ее до сих пор здесь нет.
Суть такова, В статье наглядно показано, как можно устроить раздачу статического контента и настроить для этого внешний CDN сервер.
Перевода статьи не будет, будет сразу оригинал, т.к. если вы знаете что такое CDN (Content Delivery Network) и зачем он вашему форуму, то и перевод вам ни к чему.
Лично для меня, технические статьи, связанные с настройкой сервера, лучше воспринимаются на английском языке, т.к. многие мегапереводчики пытаются переводить и консольные команды
Итак, что нам нужно?
Определиться, нужен ли нам CDN и готовы ли мы пожертвовать автоматическим сохранением таблиц CSS в файл.
Подыскать надежного CDN провадера\хостера в гугле.
Иметь представление о настройках ДНС, кофигах апача, да и о консоли вообще. + небольшие знания админки воблы.
Поехали..
The last time I wrote about CDN, I wrote about how to configure CDN for wordpress to speed up your wordpress blog to display content to users faster and more efficiently. However, a few regular readers like to know how to configure the Amazon CDN or other CDN network to use with Vbulletin forum software. In this quick tutorial, I will explains how to configure Vbulletin, Apache/Lighttpd webserver, Bind dns server to use a CDN to distribute your common files such as css, js, user uploaded files and lighten load on your web server.
Our Sample Forum Setup
Forum URL : http://nixcraft.in/ - This is hosted on your own server using Apache, Lighttpd, or Nginx.
Origin Pull URL : http://cdn-origin.nixcraft.in/ - This is hosted on your own server. You need to configure your web server, vbulletin and dns server to use this. This is called as "Origin Pull Host" which is a CDN method by which content is pulled from your web server.
CDN URL : http://cdn.nixcraft.in/ - This is a cdn url hosted by your CDN provider such as Amazon. This url always point to an edge server via proprietary DNS hacks. cdn.nixcraft.in must be set as CNAME records which will point to domain names of CDN server.
CDN DNS CNAME : cdn.nixcraft.in.example.com - example.com is your CDN provider. This is must be set as CNAME for cdn.nixcraft.in
Step # 1: Purchase CDN Service
As I said earlier the cost varies between CDN providers. Check CDN service providers website for more information. Next, you need to use service providers "control panel" to configure an "Origin Pull Host" for each domain. In other words configure cdn.nixcraft.in in origin pull mode. The control panel will also provide your an option to setup CDN dns CNAME. You need to use same CNAME in step # 2. Once the configuration is active and the CNAME is resolving, calls to cdn.nixcraft.in will be cached from cdn-origin.nixcraft.in.
Step # 2: Update Your DNS Server
I'm assuming that you are using BIND dns server edit your zone file and add entry as follows (you can skip this step and use your ISP's dns hosting providers control panel to setup CNAME and origin host):
Code:
; CDN CNAME mapping for cdn.nixcraft.in
cdn 3660 IN CNAME cdn.nixcraft.in.example.com.
; Your cdn-origin url (note nixcraft.in is also hosted on same server IP 123.1.2.3)
cdn-origin 3600 IN A 123.1.2.3
Save and close the file. Reload named:
Quote:
# rndc reload && tail -f /var/log/messages
To keep your configuration simple use the same web server for origin pull domain and main domain i.e. host both cdn-origin.nixcraft.in and nixcraft.in on same web server. This allows you to directly upload and map files to the CDN server.
Step # 3: Configure Origin Pull Web Server
You need to configure cdn-origin.nixcraft.in as follows:
Origin pull DocumentRoot: /home/httpd/cdn-origin.nixcraft.in - All your .css, .js and uploaded files are hosted here.
Server Forum DocumentRoot: /home/httpd/nixcraft.in - All your vbulletin files are hosted here.
MaxAge: Set cache-lifetime headers for static files for cdn network.
Etags: An ETag (entity tag) is part of HTTP, the protocol for the World Wide Web. It is a response header that may be returned by an HTTP/1.1 compliant web server and is used to determine change in content at a given URL. When a new HTTP response contains the same ETag as an older HTTP response, the client can conclude that the content is the same without further downloading.
Sample Apache Configuration
Code:
<VirtualHost cdn-origin.nixcraft.in >
ServerAdmin webmaster@nixcraft.in
DocumentRoot /home/httpd/cdn-origin.nixcraft.in
ServerName files.nixcraft.in
ServerAlias file.nixcraft.in
ErrorLog /var/logs/httpd/cdn-error_log
CustomLog /var/logs/httpd/cdn-access_log common
# Files in this directory will be cached for 1 week only.
# After 1 week, CDN server will check if the contents has been modified or not.
# If not modified, Apache will send 304 "Not Modified" header
<Directory "/userimages">
Header set Cache-Control "max-age=604800, must-revalidate"
</Directory>
# Disable ETag as we are on cluster Apache server
<Directory "/pdfs">
Header unset ETag
FileETag None
</Directory>
# Do not cache
<Directory "/patches">
Header Set Cache-Control "max-age=0, no-store"
</Directory>
</VirtualHost>
Step # 5: Configure Vbulletin To Use a CDN Server
You need to edit your vbulletin style. Open admincp by visiting http://nixcraft.in/admincp/ > Select Styles & Templates > Replacement Variable Manager:
Fig.01: Vbulletin Editing Styles And Templates
Click on [Add New Replacement Variable] link and set it as follows:
Set Search for Text to href="clientscript
Set Replace with Text to href="http://cdn.nixcraft.in/clientscript
Sample outputs:
Fig.02: Vbulletin Adding Replacement Variable For CDN
You need to repeat this step for images, javascript and other shared media as follows:
Avatars & Pictures - Storage Type
Visit Avatars > Storage Type and set them as follows to match your above CDN rules by moving all of them to file systems:
Avatars are currently being served from the filesystem at ./customavatars
Profile pictures are currently being served from the filesystem at ./customprofilepics
Signature pictures are currently being served from the filesystem at ./signaturepics
How Do I Test Images And Other Media Files Are Cached Or Not By CDN?
Use curl to test HTTP headers (look for Etags, max-age and Expires headers):
В будущем, если все-таки будут те, кому не понятен анг. язык, может и переведу по просьбам.
В общем-то все
Если появятся вопросы по реализации, обращайтесь, постараюсь помочь.
Есть еще один интересный способ выноса статики на cdn средствами nginx без необходимости вмешательства в движок (не всегда есть возможность в чем-то ковыряться и переделывать/переписывать). Это модуль http_substitutions_filter для nginx, по ссылке есть и примеры.
@tays
Эксперт
Join Date: Jun 2006
Posts: 369
Версия vB: 3.8.x
Пол:
Reputation:
Professional 1064
Репутация в разделе: 746
1
Количество статики, которое будет раздаваться таким образом, очень мало по отношению ко всему отдаваемому сервером контенту.
Nginx прекрасно справляется к кэшированием такой статики без какого-либо существенного влияния на нагрузку сервера.
Кроме того, у старых посетителей эта статика кэшируется локально в их браузерах, поэтому такая кухня с CDN имеет смысл только при резких наплывах на сайт большого количества новых пользователей. И опять таки nginx должен прекрасно справиться.
Вот если бы на cdn сделать хранение вложений VB, то это было бы интересно.
@BTC
СпециалистЪ
Join Date: Aug 2013
Posts: 727
Версия vB: 3.8.x
Reputation:
Knowing 240
Репутация в разделе: 47
0
Quote:
Originally Posted by eska
Количество статики, которое будет раздаваться таким образом, очень мало по отношению ко всему отдаваемому сервером контенту.
Nginx прекрасно справляется к кэшированием такой статики без какого-либо существенного влияния на нагрузку сервера.
Кроме того, у старых посетителей эта статика кэшируется локально в их браузерах, поэтому такая кухня с CDN имеет смысл только при резких наплывах на сайт большого количества новых пользователей. И опять таки nginx должен прекрасно справиться.
Вот если бы на cdn сделать хранение вложений VB, то это было бы интересно.
К примеру, JS либы, а если на форуме от дбтеч много установлено, весят порядка нескольких мегабайтов + лого, цсс, изображения, кнопки и т.д. Обычно весь стиль весит около 1-4 мегабайт, т.е. в комплексе, если пользователь полазит по нескольким страничкам, где у него прогрузятся все элементы форума, то это вызовет огромный траффик с сервера + довольно таки тяжелые страницы, инет до сих пор не у всех быстрый + мобильный инет сейчас популярен.
CDN раздает контент статический, по идее, как задумано, с серверов, расположенных рядом с конечным пользователем, т.е. прогрузка статики будет идти с другого рядом расположенного сервера, что будет большим плюсом.
Smalesh
В Черном списке
Join Date: Oct 2006
Награды в конкурсах:
Posts: 3,055
Версия vB: 3.8.7
Пол:
Reputation:
Мастер 3981
Репутация в разделе: 1320
1
Quote:
Originally Posted by eska
Вот если бы на cdn сделать хранение вложений VB, то это было бы интересно.
Именно аттачей - можно, но если разворачивать свой CDN. А вот если картинки c imagehosting вынести на внешний CDN (пробовал selectel и свой CDN) реально:
http_substitutions_filter меняет ссылки в постах (а то штатно скрипт керка так не умеет, а править файлы с каждым обновлением скрипта лениво)
rsync выносит картинки на внешний хост, запуск по крону.
nginx по tru проверяет, есть ли картинка в хранилище, если нет - тянет с оригинального хоста
Профит)
@tays
Эксперт
Join Date: Jun 2006
Posts: 369
Версия vB: 3.8.x
Пол:
Reputation:
Professional 1064
Репутация в разделе: 746
0
Quote:
Originally Posted by Smalesh
Именно аттачей - можно, но если разворачивать свой CDN.
А конкретнее, с учетом того, что вложения отдаются VB через php?
Quote:
Originally Posted by BTC
CDN раздает контент статический, по идее, как задумано, с серверов, расположенных рядом с конечным пользователем, т.е. прогрузка статики будет идти с другого рядом расположенного сервера, что будет большим плюсом.
я это хорошо понимаю Поэтому и отказался в свое время от идеи использования CDN для такой статики VB. Причины я описал выше.
Возможно мой пример не показательный т.к. я не использую продукты от ДБТех совсем, т.е. абсолютно )
Smalesh
В Черном списке
Join Date: Oct 2006
Награды в конкурсах:
Posts: 3,055
Версия vB: 3.8.7
Пол:
Reputation:
Мастер 3981
Репутация в разделе: 1320
2
Quote:
Originally Posted by eska
А конкретнее, с учетом того, что вложения отдаются VB через php?
Переводим раздачу аттачей на X-Accel-Redirect, это позволит вынести локейшен с файлами куда угодно. Это ключевое, остальное дело техники.
@madbadjack
Эксперт
Join Date: Jun 2007
Location: Россия, Москва
Posts: 1,240
Версия vB: 3.8.x
Пол:
Reputation:
Expert 1177
Репутация в разделе: 373
0
Quote:
Originally Posted by eska
Количество статики, которое будет раздаваться таким образом, очень мало по отношению ко всему отдаваемому сервером контенту.
Nginx прекрасно справляется к кэшированием такой статики без какого-либо существенного влияния на нагрузку сервера.
Лучше и не скажешь. При серфинге моего форума в 70-80 чел. в "прямом эфире, в мин. времени" (+ есть еще 5 проектов, где тоже нагрузка существует), я не вижу никаких тормозов. Надо просто грамотно настроить сервер. А CDN-серверов даже на территории РФ мало (очень мало), что говорить про страны СНГ? И в чем прикол? Это актуально для "Забурорья" + 100к посетителей в день.
madbadjack добавил 22.04.2015 в 16:21
Quote:
расположенных рядом с конечным пользователем
Ключевая причина отказа для бывшего СССР.
Last edited by madbadjack : 04-22-2015 at 05:21 PM.
Reason: Добавлено сообщение
Smalesh
В Черном списке
Join Date: Oct 2006
Награды в конкурсах:
Posts: 3,055
Версия vB: 3.8.7
Пол:
Reputation:
Мастер 3981
Репутация в разделе: 1320
0
Quote:
Originally Posted by madbadjack
Это актуально для "Забурорья" + 100к посетителей в день.
Все относительно и зависит посещалки и объема статического контента. Иногда выгодней вынести статику на относительно дешевый CDN, чем докупать дисковое пространство на основном сервере.
@madbadjack
Эксперт
Join Date: Jun 2007
Location: Россия, Москва
Posts: 1,240
Версия vB: 3.8.x
Пол:
Reputation:
Expert 1177
Репутация в разделе: 373
0
Quote:
Originally Posted by Smalesh
Иногда выгодней вынести статику на относительно дешевый CDN, чем докупать дисковое пространство на основном сервере.
Где это на пространстве пост-союза дешевые CDN? По мне, так при наличии здравого смыла и рук, проще иметь сервер с достаточным объемом дискового пространства + грамотной настройкой. И не парится со сторонними вариантами. Ну вот за исключением бэкапов. Легко настроить хранение бэкапов на дешевом селектеле (хранилище), а это масса дискового места (ну в моем случае).