Это определенно возможно. Мы рассмотрим общий случай с Apache здесь.
Допустим, вы большой поклонник Symfony2 и хотели бы получить доступ к своему веб-сайту Symfony по адресу http://symfony.local/
с 4 разных компьютеров (основного, на котором размещен ваш сайт, а также подключенных дистрибутивов Mac, Windows и Linux). (беспроводной или нет) к основному компьютеру.
Общий эскиз:
![enter image description here](https://i.stack.imgur.com/UsAJx.png)
1 Настройка виртуального хоста :
Сначала вам нужно настроить виртуальный хост в вашем файле apache httpd-vhosts.conf
. На XAMP вы можете найти этот файл здесь: C:\xampp\apache\conf\extra\httpd-vhosts.conf
. На MAMP вы можете найти этот файл здесь: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
. Этот шаг подготавливает веб-сервер на вашем компьютере для обработки symfony.local
запросов. Вам необходимо указать имя виртуального хоста, а также корневую / основную папку вашего сайта. Для этого добавьте следующую строку в конец этого файла. Вам нужно изменить DocumentRoot
, где находится ваша основная папка. Здесь я взял /Applications/MAMP/htdocs/Symfony/
в качестве корня моего сайта.
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
ServerName symfony.local
</VirtualHost>
2 Настройте файл hosts :
Чтобы клиент (в данном случае ваш браузер) понял, что на самом деле означает symfony.local
, вам нужно отредактировать файл hosts на вашем компьютере. Каждый раз, когда вы набираете URL в вашем браузере, ваш компьютер пытается понять, что это значит! symfony.local
ничего не значит для компьютера. Поэтому он попытается разрешить имя symfony.local
в IP-адрес. Это будет сделано, сначала посмотрев файл hosts на вашем компьютере, чтобы увидеть, может ли он сопоставить IP-адрес с тем, что вы ввели в адресной строке. Если это невозможно, то он спросит DNS-серверы . Хитрость в том, чтобы добавить следующее в ваш файл hosts.
- Вкл. MAC , этот файл находится в
/private/etc/hosts
;
- Вкл. LINUX , этот файл находится в
/etc/hosts
;
- Вкл. ОКНА , этот файл находится в
\Windows\system32\private\etc\hosts
;
- Вкл. WINDOWS 7 , этот файл находится в
\Windows\system32\drivers\etc\hosts
;
- Вкл. ОКНА 10 , этот файл находится в
\Windows\system32\drivers\etc\hosts
;
Файл Hosts
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1 symfony.local
С этого момента каждый раз, когда вы вводите symfony.local на этом компьютере, ваш компьютер будет использовать интерфейс обратной связи для подключения к symfony.local. Он поймет, что вы хотите работать на localhost (127.0.0.1).
3 Доступ symfony.local
с другого компьютера :
Наконец-то мы подошли к вашему главному вопросу:
Как теперь я могу получить доступ к своему веб-сайту через другой компьютер?
Ну, теперь это легко! Нам просто нужно сообщить другим компьютерам, как они могут найти symfony.local
! как нам это сделать?
3a Получить IP-адрес компьютера, на котором размещен сайт :
Сначала нам нужно узнать IP-адрес компьютера, на котором размещен веб-сайт (тот, с которым мы работали с самого начала). В терминале: MAC и LINUX тип ifconfig |grep inet
, WINDOWS
тип ipconfig
. Давайте предположим, что IP-адрес этого компьютера 192.168.1.5 .
3b Отредактируйте файл hosts на компьютере, с которого вы пытаетесь получить доступ к веб-сайту. :
Опять же, на MAC , этот файл находится в /private/etc/hosts
; LINUX , /etc/hosts
; и WINDOWS , в \Windows\system32\private\etc\hosts
(если вы используете WINDOWS 7 , этот файл находится в \Windows\system32\drivers\etc\hosts
). Теперь хитрость заключается в том, чтобы использовать IP-адрес компьютера, к которому мы пытаемся получить доступ / поговорить:
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5 symfony.local
4 Наконец, наслаждайтесь результатами в вашем браузере
Теперь вы можете зайти в свой браузер и набрать http://symfony.local
, чтобы красиво увидеть ваш сайт на разных компьютерах! Обратите внимание, что вы можете применить ту же стратегию, если вы являетесь пользователем OSX, чтобы протестировать свой веб-сайт в Internet Explorer через Virtual Box (если вы не хотите использовать компьютер с Windows). Это прекрасно объясняется в Создание среды тестирования Windows / IE на OSX .
Вы также можете получить доступ к своему локальному хосту с мобильных устройств
Вы можете задаться вопросом, как получить доступ к сайту localhost с мобильного устройства. В некоторых случаях вы не сможете изменить файл hosts (iPhone, iPad ...) на своем устройстве (исключая джейлбрейк).
Итак, решение заключается в том, чтобы установить прокси-сервер на компьютере, на котором размещен веб-сайт, и подключиться к этому прокси с вашего iphone. На самом деле это очень хорошо объяснено в следующих постах и не так долго настраивается:
На Mac я бы порекомендовал: Тестирование веб-сайта Mac OS X с использованием локального имени хоста на мобильном устройстве : Использование SquidMan в качестве прокси. Это 100% бесплатное решение. Некоторые люди также могут использовать Charles в качестве прокси-сервера, но это 50 $.
В Linux вы можете адаптировать Mac OS выше, используя Squid в качестве прокси-сервера.
В Windows вы можете сделать это, используя Fiddler . Решение описано в следующем посте: Мониторинг трафика iPhone с помощью Fiddler
Редактировать 23/11/2017: Эй, я не хочу изменять мой файл Hosts
@ Dre. Любой возможный способ получить доступ к сайту с другого компьютера, не
редактировать файл хоста вручную? скажем, у меня 100 компьютеров хотел
для доступа к сайту
Это интересный вопрос, и, поскольку он связан с вопросом ОП, позвольте мне помочь.
Вам нужно будет внести изменения в свою сеть, чтобы каждая машина знала, где размещен ваш веб-сайт. Большинство обычных маршрутизаторов этого не делают , поэтому вам придется запустить собственный DNS-сервер в своей сети.
Давайте представим, что у вас есть маршрутизатор (192.168.1.1). Этот маршрутизатор имеет DHCP-сервер и выделяет IP-адреса для 100 компьютеров в сети.
Теперь, допустим, у вас, как и выше, в той же сети есть машина с 192.168.1.5
, на которой есть ваш веб-сайт. Мы назовем эту машину Помпеи .
$ echo $HOSTNAME
pompei
Как и прежде, на этой машине pompei в 192.168.1.5
работает HTTP-сервер , который обслуживает ваш сайт symfony.local
.
Чтобы каждая машина знала, что symfony.local
размещена на pompei , теперь нам потребуется специальный DNS-сервер в сети, который знает, где размещен symfony.local
. Устройства в сети смогут разрешать доменные имена, обслуживаемые pompei внутри.
3 простых шага.
Шаг 1: DNS-сервер
Настройка DNS-сервера в вашей сети. Давайте для удобства сделаем это на pompei и используем что-то вроде dnsmasq .
Dnsmasq предоставляет сервер доменных имен (DNS) , ... .
Мы хотим, чтобы pompei запустили DNSmasq для обработки DNS-запросов Hey, pompei, where is symfony.local
и ответили Hey, sure think, it is on 192.168.1.5 but don't take my word for it
.
Продолжайте установку dnsmasq, файл конфигурации dnsmasq обычно находится в /etc/dnsmasq.conf
, в зависимости от вашей среды.
Я лично использую no-resolv
и серверы Google server=8.8.8.8 server=8.8.8.4
.
* Примечание: * ВСЕГДА перезапускайте DNSmasq при изменении файла / etc / hosts, так как в противном случае изменения не вступят в силу.
Шаг 2: Брандмауэр
Для работы pompei необходимо разрешить входящие и исходящие «доменные» пакеты, которые идут от и к порту 53. Конечно! Это пакеты DNS, и если pompei не разрешает их, ваш DNS-сервер вообще не сможет связаться. Идем дальше и откроем этот порт 53. В Linux вы бы классически использовали iptables
для этого.
Делитесь тем, что я придумал, но вам, скорее всего, придется погрузиться в брандмауэр и все хорошо понять.
#
# Allow outbound DNS port 53
#
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
Шаг 3: Маршрутизатор
Сообщите вашему маршрутизатору, что ваш DNS-сервер сейчас 192.168.1.5
. В большинстве случаев вы можете просто войти в свой маршрутизатор и изменить это вручную очень легко.
Вот и все, когда вы находитесь на компьютере и запрашиваете symfony.local
, он спросит ваш DNS-сервер , где размещен symfony.local
, и как только он получит свой ответ от DNS затем сервер отправит правильный HTTP-запрос на pompei на 192.168.1.5
.
Я позволю тебе поиграть с этим и наслаждаться поездкой. Эти 2 шага являются основными рекомендациями, поэтому вам придется отлаживать и тратить несколько часов, если вы делаете это впервые. Допустим, это немного более продвинутая сеть, есть первичный DNS-сервер, вторичный DNS-сервер, и т. Д. . Удачи!