ћожно ли настроить систему, чтобы сайты, расположенные на локальном компьютере, были доступны всем пользовател€м локальной сети, к которой € подключен, или же даже из »нтернета?..
ѕроекты, заведенные в ƒенвере, по умолчанию не доступны из локальной сети. Ёто достигаетс€ благодар€ тому, что все виртуальные хосты имеют IP-адрес 127.0.0.1, всегда обозначающий "текуща€ локальна€ машина".
“ем не менее, все же существует возможность назначить тому или иному виртуальному хосту "внешний" IP-адрес, доступный из вашей локальной сети или даже »нтернета (если компьютер имеет посто€нный IP-адрес в »нтернете).
ѕомните: ƒенвер - это инструмент разработчика, а не средство хостинга. Ќесмотр€ на то, что проекты в ƒенвере можно открыть дл€ всеобщего доступа, мы категорически не рекомендуем это делать. ƒело тут в безопасности: ƒенвер, как правило, запускаетс€ с правами јдминистратора, а значит, скрипты, запущенные под его управлением, могут делать на машине все, что угодно. ћалейша€ "дыра" в безопасности скрипта откроет хакеру доступ к вашей машине.

јвторы ƒенвера не несут ответственности за любые разрушени€, причиненные хакерами тем, кто открыл ƒенвер наружу и по неосторожности допустил в своих скриптах у€звимость в безопасности.
ќпределение вашего IP-адреса

ƒл€ начала следует узнать, какой IP-адрес назначен вам в локальной сети или »нтернете. ѕроще всего это сделать, открыв  омандную строку Windows и набрав там:
ipconfig¬ы увидите что-то типа следующего:
Ќастройка протокола IP дл€ WindowsWiFi - Ethernet адаптер: DNS-суффикс этого подключени€ . . : IP-адрес . . . . . . . . . . . . : 192.168.0.49 ћаска подсети . . . . . . . . . . : 255.255.255.0 ќсновной шлюз . . . . . . . . . . : 192.168.0.1
¬ данном случае внешний IP-адрес машины в локальной сети Ч 192.168.0.49. ¬ списке могут быть перечислены сразу несколько сетевых интерфейсов (если ваш компьютер оборудован несколькими сетевыми картами или беспроводными устройствами). ¬ этом случае вам нужно определить, какой из интерфейсов €вл€етс€ внешним, доступным из локальной сети. (IP-адреса, начинающиес€ с 192.168 или 10, зарезервированы только дл€ доступа из локальной сети, но не из »нтернета. “.е. они €вл€ютс€ "приватными".) ”бедитесь, что ваш IP-адрес €вл€етс€ статическим, т.е. не мен€етс€ при следующем включении машины или перезагрузке. ≈сли IP-адрес выдаетс€ динамически, то не существует простого способа, позвол€ющего подключить к нему ƒенвер.
Ќастройка межсетевого экрана (брандмауэра, фаервола) Windows

¬ большинстве Windows-систем встроенный (либо установленный вами вручную) межсетевой экран или антивирус блокируют подключени€ с внешних машин к текущей. Ёто сделано по соображени€м безопасности.  онечно, в случае, если вы открываете сайт наружу, эту блокировку следует отключить, в противном случае сайт никто не увидит.
Ќаша цель Ч разрешить Windows подключени€ к порту 80 (протокол HTTP) вашего IP-адреса 192.168.0.49, на котором будет "висеть" Apache. ѕриведем инструкции, как это сделать в Windows XP:
  1. ќткройте ѕуск Ч ѕанель управлени€, выберите Ѕрандмауэр Windows.
  2. ѕерейдите на вкладку »сключени€.
  3. Ќажмите кнопку ƒобавить порт, в поле »м€ введите ваш IP-адрес, а в поле Ќомер порта укажите 80.
≈сли вы устанавливали свой собственный брандмауэр или антивирус, то, конечно, вам придетс€ обратитьс€ к их документации.
ѕростой способ открыти€ сайта наружу

ѕредположим, ваш IP-адрес равен 192.168.0.49, как в примере выше. —амый простой способ заставить ƒенвер открывать по адресу http://192.168.0.49 определенный сайт Ч это расположить документы сайта в директории:
/home/192.168.0.49/wwwƒа, им€ директории содержит точки! Ќе забудьте также перезапустить ƒенвер.

Ѕолее того: если ваш провайдер выдал вам не только IP-адрес, но также и св€занное с ним доменное им€, то сайт будет сразу же доступен по этому доменному имени. ¬ случае статического IP-адреса домен выдаетс€ почти всегда, вам лишь нужно узнать его у провайдера. Ќапример, если ваше доменное им€ равно abcd.ints.ru (провайдер  орвет-“елеком ЌЁ —“), то сайт будет доступен по адресу http://abcd.ints.ru. ƒругой способ назначени€ IP-адреса сайту

≈сли у вас уже имеетс€ виртуальный хост в ƒенвере и вы не хотите переименовывать его директорию документов, то вы можете назначить сайту свой собственный IP-адрес и сделать его доступным снаружи. ѕредположим, что ваш хост хранитс€ в директории /home/mysupersite/www. „тобы назначить ему IP-адрес 192.168.0.49, необходимо создать файл /home/mysupersite/.htaccess и добавить в него строчки:
## ‘айл /home/mysupersite/.htaccess## ”кажите здесь ваш внешний IP-адрес, а не 192.168.0.49!# dnwr_ip 192.168.0.49 стати, вы можете узнать, какие еще существуют директивы, загл€нув в файл /home/custom/.htaccess.
ѕерезапустите ƒенвер. ѕроверьте, что по адресу http://192.168.0.49 (вместо 192.168.0.49, конечно, нужно подставить ваш собственный IP-адрес) открываетс€ ваш сайт /home/mysupersite/www.
ѕредупреждение службы безопасности

Ќапомним еще раз, что ƒенвер Ч это не законченный и надежный Web-сервер, это Ч всего лишь инструмент, позвол€ющий отлаживать (тестировать) сайты, Ђне выход€ из домаї. Ћюба€ попытка использовать его в других цел€х может быть небезопасна.
¬ообще, настроить можно все, что угодно, другое дело Ч нужно ли это. ѕомните, что открытый дл€ окружающего мира Web-сервер представл€ет потенциальную у€звимость в защите вашей машины. Ќапример, злоумышленник может проникнуть через не до конца отлаженный скрипт. “.к. ƒенвер запускаетс€ с правами јдминистратора (то есть, с максимальными правами в системе), то любой скрипт, даже самый маленький, может делать все, что ему заблагорассудитс€. ƒавайте предположим, что вы написали вроде бы безобидный скрипт test.pl, который делает следующее:
#!/usr/bin/perl -wuse CGI::WebIn;use CGI::WebOut;Header("Content-type: text/plain");open(F, $IN) or die "Could not open\n";while(<F>) { print }ѕрограмма, казалось бы, просто печатает содержимое файла, указанного в параметре fname. Ќапример, http://localhost/cgi/test.pl?fname=test.pl напечатает исходный код программы. ќднако нетрудно заметить, что вызов open в таком виде небезопасен. Ќапример, зайд€ по адресу /cgi/test.pl?fname=|dеl+/s/q+c:\windows, в программе будет выполнено:
open(F, "|dеl /s/q c:\\windows") or ...Ёто приведет к немедленному уничтожению всей директории Windows!
¬озможно, вы скажете, что localhost Ч на то и localhost, чтобы работать лишь с текущей машины. ≈сли вы открыли доступ наружу по инструкции, приведенной выше, то все именно так. “ем не менее, в случае неправильной настройки Apache можно проникнуть на localhost и извне (если сервер открыт). Ёто делаетс€ очень просто:
C:/> telnet server.ru 80GET /cgi/test.pl?fname=|dеl+/s/q+c:\windows HTTP/1.1Host: localhostздесь нужно просто нажать Enter¬ывод: если у вас нет значительного опыта в администрировании серверов, установка Web-сервера, доступного извне, может быть опасной. Ёто особенно относитс€ к счастливым обладател€м выделенных каналов в »нтернет. ќдно неверное движение, и однажды утром вы проснетесь с только что отформатированным жестким диском (в лучшем случае).