<VirtualHost *:80>
DocumentRoot "D:/Projects"
ServerName 192.168.11.74
</VirtualHost>
Почему это не работает? Как получить доступ к веб-сайтам в локальном ящике (Windows, Apache, MySql, PHP), которые основаны на IP-адресе, назначенном внутренней сетью компании, которая недоступна извне. Когда ноутбук подключается к внутренней сети, все веб-сайты работают, но за пределами корпоративной сети этот IP-адрес не работает, даже если вся кодовая база, среда разработки находится на локальном сервере Apache на самом ноутбуке.
Есть ли способ указать 192.168.XX.XXX
к 127.0.0.1
Установите для ServerName значение localhost следующим образом:
ServerName localhost
Затем зайдите на сервер через
http://localhost
Неважно, какой у вас IP.
Сначала вы настраиваете VirtualHost следующим образом:
<VirtualHost *:80>
DocumentRoot "D:/Projects"
ServerName projecthost
</VirtualHost>
Затем в Windows вы всегда можете установить IP-адрес, на который будет указывать «projecthost». Отредактируйте файл C: \ Windows \ system32 \ drivers \ etc \ hosts и добавьте:
projecthost 127.0.0.1
или
projecthost 192.168.11.74
Затем зайдите на сервер через
http://projecthost
Это не работает, потому что параметр «ServerName» для Apache эффективно говорит: если вы получили запрос, убедитесь, что URL-адрес, указанный пользователем, имеет адрес 192.168.11.74. Если вы находитесь за пределами сети своей компании и не используете этот IP-адрес (потому что вам был назначен другой), ваш запрос будет либо:
Если вам нужен только один веб-сайт (вероятно, на данном этапе), я бы рекомендовал удалить строку ServerName, потому что она вам не помогает (как рекомендовано Мануэлем Соуза), и использовать 127.0.0.1 локально и 192.168.11.74, когда вы в вашей рабочей сети.
Пример неоптимального подхода, который может достичь заявленной цели: вы можете попытаться настроить вашу сетевую карту на дополнительный IP-адрес (192.168.11.74), пока вы не на работе. Проблемы:
Опять же, я думаю, что такой подход - плохая идея, но вы можете судить сами: http://social.technet.microsoft.com/Forums/windows/en-US/691d5aa4-09a3-4390-856a-26c10d773a3b/how-to-assign-differentmultiple-ip-address-to-nic-network-card? forum = w7itpronetworking
Если вы собираетесь использовать только один виртуальный хост, вы можете использовать виртуальный хост apache по умолчанию. Видеть: Виртуальный хост Apache по умолчанию
Если вы размещаете несколько виртуальных хостов, edvinas предоставит ответ. Создайте имя для каждого проекта и создайте запись в файле hosts с этим именем, указывающим на 127.0.0.1, который всегда доступен.
Есть ли у вас что-нибудь еще (возможно, другой виртуальный сервер), которое слушает 127.0.0.1 ??
Если нет, вы можете очень хорошо отредактировать виртуальный хост, чтобы разрешить весь трафик, получаемый в 127.0.0.1.
Что если вы попробуете пакетный файл, который изменяет файл хоста (C: \ Windows \ system32 \ drivers \ etc \ hosts), когда вы находитесь вне сети, а затем другой, когда вы находитесь внутри?
Настройте его так, чтобы, когда вы находитесь за пределами корпоративной сети, он добавлял эту строку:
192.168.11.74 127.0.0.1
А потом еще один, чтобы прокомментировать это, когда вы попадете в корпоративную сеть вот так:
#192.168.11.74 127.0.0.1
Или просто удаление линии тоже должно сработать.
Таким образом можно сохранить конфигурацию apache без изменений и просто внести изменения на своем ноутбуке.
Ура!
Вы можете обойти это с помощью службы динамического DNS, которая позволяет использовать частное адресное пространство. (Я знаю, например, что это делает dyn.com, но у меня нет того или иного мнения об их услугах)
Например, вы бы использовали:
ServerName myapp-whatever.dyndns.org
в вашем apache conf и запустите клиент обновления, который поддерживает использование вашего адреса интерфейса (а не вашего обнаруженного общедоступного IP-адреса, что делает большинство, но сломается для вас)