Proxy: from Direct to Reverse

Предлагаю вместе со мной немножко отдохнуть от бумажной рутины отчетного периода, и, с целью расширения общего кругозора, познакомиться с  несложными примерами практически полезного веб-программирования. Речь пойдет о прокси-серверах, написанных на PHP, и превращении прямого прокси в обратный. Эта статья обязана своим рождением невероятной отсталости технического обеспечения научно-образовательных государственных учреждений, и посвящается памяти вебсервера ХНУ имени В.Н. Каразина, на котором размещаются сайты многих его подразделений.

Зачем нужны прокси?

Всё очень просто. Предположим, у вас нету доступа к Интернету, но есть локальная сеть, один из компьютеров которой имеет выход в Интернет. А Вы очень хотите просматривать сайты в Интернете. Или же Вы хотите просматривать некоторые сайты анонимно, не «засвечивая» свой айпи. Для этих целей придуманы специальные программы-посредники между Вашим компьютером и другими — прокси-серверы. Прокси для решения вышеописанных задач также называют прямыми.
Если Вы хотите разместить сайт в Интернете, но вынуждены держать его на своем собственном компьютере, наиболее доступным решением будет использовать обратный прокси.
Причины, по которым Вашему ресурсу может потребоваться обратный прокси:

  • у хостера, доступного из Вашей локальной сети, нету необходимых Вашему сайту ресурсов (ограничено дисковое пространство, нет доступа к СУБД, слабый процессор или мало оперативной памяти, не поддерживаются необходимые конфигурации ПО (перл, асп, руби…) и т.д.)
  • вы не доверяете хостеру конфиденциальную информацию пользователей своего ресурса
  • вы хотите иметь полный контроль над всеми аспектами работы своего сервера (конфигурация, резервное копирование и другое обслуживание)

Далее речь пойдет о прокси-серверах, написанных на языке ПХП, и не требующих для своей работы от сервера хостера ничего, кроме поддержки ПХП и отсутствия запрета на установление исходящих соединений.

Прямой прокси

Поскольку мне нужен был обратный пхп прокси, искать я начал именно его.  К моему глубочайшему удивлению, ничего подходящего в результатах Гугла и Яндекса на первых нескольких страницах не оказалось. Наверняка, в глубинах Интернета где-то можно откопать обратный прокси на пхп, но интуиция подсказывает, что овчинка выделки не стоит. Быстрее «вывернуть наизнанку» прямой прокси, чтобы превратить его в обратный.
Ситуация с прямыми пхп прокси оказалась гораздо лучше, чем с обратными, и через полчаса у меня уже было в распоряжении несколько кандидатов на копание в их внутренностях. Из них наиболее тщательно проработанным оказался  ПХПрокси (PHProxy), поэтому именно его могу рекомендовать для использования в качестве прямого прокси. Скачать его можно на Сорсфорже по этой ссылке, или же версию PHProxy-0.5b2 отсюда.

Обратный прокси

Используя в качестве основы прямой прокси, после нескольких часов незамысловатых танцев с бубном над его исходниками и отладки, я получил очень даже шустрый обратный прокси. Если раньше для открытия страницы сайта, расположенного непосредственно на хостинге, где сейчас стоит прокси, требовалось несколько минут (и то, в случае удачи), то через прокси странички стали открываться за 15-20 секунд. Такая разница меня очень порадовала.

Скачать получившийся обратный прокси можно по этой ссылке.

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

Конфигурирование обратного прокси совсем несложное:

  1. В файле index.php в строке 35 измените значение переменной $MySiteUrl на имя или адрес вашего локального сервера, на котором будет работать Ваш ресурс.
  2. В строке 37 измените значение $MyBackupUrl на адрес, на который будет происходить автоматическое перенаправление пользователей в том случае, если сервер хостера не может установить соединение с компьютером, на котором работает Ваш сайт. Это может произойти из-за неисправностей в сети, если зависнет компьютер с сайтом или его кто-то выключит, и по другим мыслимым и немыслимым причинам.
  3. Если Вы хотите, чтобы пользователи из вашей локальной сети обращались к вашим ресурсам напрямую, минуя прокси-сервер, оставьте строку 39 с переменной $localhosts незакомментированной. Если хотите, чтобы все ходили через прокси — закомментируйте её.

Теперь живой пример сайта, на который Вы заходите через этот обратный прокси:

http://fbme.univer.kharkov.ua/

На этом по теме проксей пока всё, желаю удачи!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*