Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Имена доменов host_X.ru, virtual_host.ru не имеют ничего общего с реальными доменами, и используются в описании ситуации и тех условии на разработку.

Вводные данные:

В силу нехватки (отсутствия) нескольких реальных(статических) IP адресов для виртуальных хостов базирующих на одном выделенном сервере развернут Apache.

Сервер имеет несколько подключений в интернет с разным «весом» ценой.

Поддержка виртуальных хостов в DNS присутствует(при необходимости можно добавить любые записи) для большинства хостов прописаны записи А и С name для подключений по каналаx с динамическим выделением IP и использующих DynDNS .

Что происходит сейчас:

Для всего этого богатства мы имеем один железно статический IP адрес с развернутым на нем host_X.ru (он же localhost для apache) подключен каналом на ПРОВАЙДЕР1.

Все входящие запросы, вне зависимости от того с какого бы из подключений не пришли согласно записи DNS перенаправляются на host_X.ru через ПРОВАЙДЕР1.

Все входящие запросы, вне зависимости от того с какого бы из подключений не пришли согласно записи DNS перенаправляются на виртуальные хосты также через ПРОВАЙДЕР1.

Все входящие запросы, вне зависимости от того с какого бы из подключений не пришли и адресованные к несуществующим под доменам т.е. например vasy.virtual_host.ru (сам virtual_host.ru развернут на машине и прописан в DNS) или запросы пришедшие через прокси или от старых браузеров не поддерживающих http 1.1. средствами Apache направляются на его localhost, то есть на host_X.ru.

Что хотим получить:

Набор скриптов на PHP с использованием mySQL (или файлов – категорически не отметаются хотя хотелось бы на sql или они могут дублировать sql в случае его падения). Устанавливающиеся в localhost apache и возможно в корень каталогов виртуальных хостов + модификация файлов .htaccess (или дописываются функции в существующие index.php виртуальных хостов) но без внесение ограничений в уже используемые скрипты на виртуальных хостах.

В проекте нужны следующие атрибуты:

Админка – для внесения данных в базу SQL

Странички ошибок (стандартные Apache не подойдут т.к. с его точки зрения ошибки то и нет)

Странички переадресации – с соответствующими информационными блоками (берем из SQL)

Страничка статистики (простенько выборка из базы по нескольким заданным критериям)

- Дизайн не нужен – только движок

Через админку в базу данных заносим все необходимые нам данные, например:

Имеющиеся у нас домены и под домены(и их алиасы) , IP адреса доменов (мало ли что будет в будущем). Наименования провайдеров ip адреса интерфейсов и их имена из dyndns , IP сети соотнося их принадлежность соответствующему провайдеру, атрибуты для описания поведения скрипта в определенных ситуациях.

Выполняя функции «умной переадресации» на следующих условиях:

1. Проверяем тип запроса (может ли клиент вообще работать с виртуальными хостами) если НЕТ выводим страничку с текстом из таблицы _redir_http11_error

2. Смотрим есть ли запрошенный домен(поддомен) – данные берем из SQL- если такового домена нет выводим страничку с текстом из таблицы _redir_domain_error

a. Если нет запрошенного под домена смотрим статус «Оставаться в пределах домена» и если он true переадресуем пользователя на корень домена (т.е. если запрошен vasy.virtual_host.ru то направляем его на virtual_host.ru)

b. Если статус «Оставаться в пределах домена» false и явно задан URL для переадресации отправляем пользователя на данный URL (на пример пользователь ввел virtual_host.ru или www. virtual_host.ru в любом случае перебрасываем его на tr. virtual_host.ru)

c. Если статус «Оставаться в пределах домена» false и URL для переадресации не задан то выводим страничку с текстом из таблицы _redir_domain_error

3. Если для домена установлен атрибут «Использовать настройки провайдера» то проверяем принадлежность ip адреса пользователя с таблицами IP адресов провайдеров (если после сравнения IP мы получим false считаем, что пользователь пришел «снаружи») и переадресуем пользователя на соответствующий поддомен (provider1. virtual_host.ru если он пришел с первого провайдера, provider2. virtual_host.ru если со второго и т.д. соответствующие записи внесены в DNS)

a. Если после сравнения IP клиента с Ip адресами из БД SQL мы получим false и пользователь пришел «снаружи» смотрим статус атрибута «Разрешить внешние подключения» если он true, то смотрим настройку «основной провайдер(URL) для домена» и направляем пользователя на него.

b. Если «основной провайдер» недоступен (например упал канал), то пере направляем на следующего по «весу»(более дешевого провайдера – для этого наверное надо будет сделать соответствующую табличку в SQL)

c. Помимо allow списков IP адресов, было бы замечательно ввести и DENY списки адресов, при входе с которых пользователь бы отправлялся на страницу с текстом из таблицы _IP_access_deny скрипта (или на 403 самого apache если это будет сделано через .htaccess файлы или, что еще лучше, на переназначенную 403-ю для данного домена для каждого домена стоит прописать переадресацию на 403 для использования соответствующего домену дизайна) - надо для обрубания поисковых ботов и злостных «жопашников»

4. 4. Необходимо отражать в БД SQL перенаправления осуществленные скриптом для дальнейшего вывода на страничке статистики

a. Предусмотреть отключение логирования и ограничение размера таблицы логов

Возможна оптимизация процессов

Бюджет 500 р. Возможен аргументированный торг, все виды платежа,

15 лет назад
AlisaS
Алиса 
42 годаРоссия
15 лет в сервисе
Была
8 лет назад