Первый статья о моем маленьком хостинге была опубликована в 2010 году.
С тех пор прошло почти 2 года, добавлялись и менялись сервера, менялась структура, менялись технологии.
На данный момент я готовлюсь к переезду в Новосибирск и решил раскрыть карты и хитрости моего небольшого хостинга.
Статья будет интересна специалистам на наших огромных территориях, где до сих пор нет нормального «внешнего» Интернета, и тем, кто хочет построить хостинг с распределением нагрузки на относительно недорогом оборудовании.
Главным образом хостинг Ромашка отличается уникальной реализацией комбинации DNS-серверов Bind и Nginx.
Связывать
Bind использует замечательную вещь, называемую представлением.Это позволяет различным заранее назначенным местам назначения сообщать определенные записи DNS. Например, если запрос пришел из зоны 1.2.3.0/24, то somehost.host выдаст адрес 1.2.3.4. Если из зоны 2.3.4.0/24, то адрес 2.3.4.5. Якутск разделен на две основные зоны: Магистральную (группа провайдеров) и Пиринговую (Ростелеком).
Между ними трафик 7 копеек за 1 Мб.
Следовательно, если сервер расположен в одной зоне, то для клиентов из второй зоны он будет платным.
Местные хостеры боролись с 7 копейками, вводя www2.some.host и прочие костыли.
Этот метод прозрачен для пользователя.
Пример конфигурации name.conf.local: акл ртк { 1.2.3.0/24; }; acl bbn { 2.3.4.0/24; }; просмотреть "bbn" { матч-клиенты {bbn; }; зона "host.net" { тип мастер; файл «/etc/bind/bbn/db.host.net»; }; включить "/etc/bind/named.conf.default-zones"; }; просмотреть "РТК" { матч-клиенты {rtk; }; зона "host.net" { тип мастер; файл «/etc/bind/rtk/db.host.net»; }; включить "/etc/bind/named.conf.default-zones"; }; просмотреть "любой" { матч-клиенты {любой; }; зона "host.net" { тип мастер; файл «/etc/bind/any/db.host.net»; }; включить "/etc/bind/named.conf.default-zones"; }; Файлы зон стандартные, но разнесены по разным каталогам.
Одним из недостатков является то, что мы редактируем файлы вручную.
Вменяемой админки для управления просмотром я пока не видел.
Этот трюк можно использовать для отображения определённым структурам левого адреса вместо нашего текущего.
Но я вам этого не говорил ;)
Нгинкс
Сначала у нас был Nginx как интерфейс к тяжелому Apache. Тогда и родилась идея вообще перенести Nginx на отдельные серверы.Прокси-сервер кэширует статический медиаконтент (mp3, avi, flv, jpg, png и т. д.) и пересылает другие запросы (php, css и т. д.) Apache. На данный момент основные серверы с файлами и базами данных хранятся в неизвестном практически никому помещении.
Между ними и фронтендом устанавливаются VPN-туннели с помощью Hamachi. Почему это так сложно? Теперь наш небольшой хостинг не зависит от провайдеров.
Мы поменяли канал связи, обновили записи DNS, перенастроили VPN и теперь нам не страшна даже блокировка по IP-адресу.
Выгода! ;) Пример конфигурации site-enabled/host.name: сервер { слушай 80; имя сервера www.host.net хост.нет; access_log /var/log/nginx/host.net.access.log; error_log /var/log/nginx/host.net.error.log; расположение/{ proxy_pass 5.6.7.8 :80/; proxy_set_header Хост $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_redirect выключен; } location ~* .
(jpg|png|gif|jpeg|mp3|mp4|wav|mov|avi)$ {
proxy_cache_valid 200 20000м;
истекает через 30 дней;
proxy_pass 5.6.7.8 :80;
proxy_set_header Хост $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache кэш страницы;
}
Не забудьте включить rpath на Apache.
Нижняя граница
Система иногда зависает из-за неуклюжих рук (забыл обновить серийник во всех файлах, ошибся с адресом в конфиге и т.п.).
Но это работает и радует несколько проектов.
UPD Proxy0 может не существовать.
Запросы с периферийного интерфейса могут направляться непосредственно на корневые серверы, которые обычно расположены за NAT. Теги: #Хостинг #хостинг Просмотр привязки nginx
-
Как Подготовиться И Сдать Ielts: Личный Опыт
19 Oct, 24 -
Реализация Оператора In В C++
19 Oct, 24 -
Справочник Российских Нанотехнологий
19 Oct, 24