Хостинг На Краю Света 2

Первый статья о моем маленьком хостинге была опубликована в 2010 году.

С тех пор прошло почти 2 года, добавлялись и менялись сервера, менялась структура, менялись технологии.

На данный момент я готовлюсь к переезду в Новосибирск и решил раскрыть карты и хитрости моего небольшого хостинга.

Статья будет интересна специалистам на наших огромных территориях, где до сих пор нет нормального «внешнего» Интернета, и тем, кто хочет построить хостинг с распределением нагрузки на относительно недорогом оборудовании.

Главным образом хостинг Ромашка отличается уникальной реализацией комбинации DNS-серверов Bind и Nginx.

Хостинг на краю света 2



Связывать
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

Вместе с данным постом часто просматривают: