Dmitry Kabakov

Настройка web-сервера ДО для локальной сети и интернета

Порой бывает удобно, чтобы ваш интернет ресурс был доступен как из локальной сети, так и из интернета одновременно. Давайте попытаемся описать, каким образом настраивается веб-сервер для этого.
В моем случае таким ресурсом был сервер дистанционного образования, а именно Moodle - программный продукт на базе Apache, использующий PHP и какую-либо разновидность SQL (как правило, MySQL) - открытая платформа для создания курсов и сайтов, базирующихся в интернете. На настраиваемой машине должно быть не менее двух сетевых интерфейсов: для сети внутренней локальной и для внешней (интернета).
Необходимо было сначала установить php и mysql, затем сам moodle. В принципе, для работы в локальной сети (интранете) сервер готов. Для того, чтобы он работал в интернете, необходимо открыть 80 порт на роутере и поменять в конфигурационном файле config.php строку
$CFG->wwwroot = "http://your_local_moodle_host_name;
на
$CFG->wwwroot = "http://your_real_internet_domain_name;
Если сделать только первый шаг, то сайт действительно появится в сети, но все ссылки в нем будут на локальный web-ресурс. После того, как выполнен второй шаг, сайт в интернете работает правильно, но в локальной сети работать перестает - все ссылки в нем на внешний ресурс.
Решить данную проблему можно несколькими способами: либо с помощью локального DNS переопределять имя/ip-адрес хоста как внутренний ресурс и посылать все запросы к нему, либо каким-то образом, сделать динамическим название хоста в ссылке, либо создать в apache виртуальные хосты с одним и тем же ip-адресом и несколькими псевдонимами для полной независимости... и так далее - способов множество. Решение оказалось довольно простым. Если отталкиваться от формулировки проблемы как проблемы неправильной генерации ссылок, то помогает правильное переопределением названия хоста в конфигурационном файле config.php сайта:
$CFG->wwwroot = "http://".$_SERVER["HTTP_HOST"];
$_SERVER - суперглобальный массив, в который PHP-интерпретатор помещает переменные, полученные от сервера. Без данных переменных сложно организовать полноценную поддержку Web-приложений. В элементе $_SERVER['HTTP_HOST'] содержится имя сервера, которое, как правило, совпадает с доменным именем сайта, расположенного на сервере. В параметре приводится лишь доменное имя без названия протокола (источник - php.su)
Таким образом, php-машина для каждого конечного пользователя, при обращении браузера к сайту, формирует страницу персонально и тот самый wwwroot для каждого пользователя свой. Например: пользователь грузит страницу из интернета - загружаются данные с www.my_moodle_host.ru; грузит страницу из локальной сети, которой принадлежит этот сайт - грузится my_moodle_host - доменное имя машины в данной сети. Так же заменяются ip-адреса. Если пользователь набрал в строке браузера 85.156.48.70 - выделенный ip-адрес, назначенный данному серверу в глобальной сети, то, пройдя, например, к странице аутентификации, в строке адреса браузера он увидит что-то наподобие http://85.156.48.70/login.php.

В вышеописанном случае я настроил нужный режим работы системы не прибегая к сторонним методам, а пользуясь только настройками среды. Если кто-то сталкивался с подобной проблемой, мне интересно будет узнать другие способы ее решения. Прошу отписывать в комментариях :)

Tags: apache, moodle, wwwroot

Share 

Add a Comment

You need to be a member of Open Source University Meetup to add comments!

Join this social network


Webinars

OSUM members get exclusive access to a series of webinars on the most innovative open source technologies via the OSUM Webinar Series.

If you missed any of the previous OSUM Webinars, click here to listen to the replays of the previous sessions.

News

Download Free OpenOffice.org Guide For Creating Large Documents One of the advantages of OpenOffice.org is its ability to handle large word processing documents such as theses and research papers. Download this free guide now and read expert advice on writing with OpenOffice.org.

Get On Board with JavaFX & the Tech Train Game

Get a hands-on introduction to JavaFX when you play the Tech Test Train - Ride the train, test your knowledge of JavaFX technology, and earn points. Click HERE to play.

Working With ZFS Snapshots Download the free ZFS Snapshots How-To Guide to learn how to create and use the backup and restore capabilities of ZFS snapshots.

© 2009   Created by Gary Serda

Badge  |  Report an Issue  |  Privacy  |  Terms of Service