Назад | Перейти на главную страницу

Использовать IP-адрес на основе локальной сети для доступа к локальному Apache на ноутбуке при работе вне сети?

<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

Опция 1

Установите для ServerName значение localhost следующим образом:

ServerName localhost

Затем зайдите на сервер через

http://localhost

Неважно, какой у вас IP.

Вариант 2

Сначала вы настраиваете 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-адрес (потому что вам был назначен другой), ваш запрос будет либо:

  • Получите доступ к серверу Apache, но у вас есть другой IP-адрес (127.0.0.1 или любой другой IP-адрес, назначенный вам внешней сетью), или
  • Не добраться до сервера Apache, потому что ваш компьютер больше не знает, где находится 192.168.11.74 (он забыл свой прежний идентификатор, потому что он не имеет отношения к его новому сетевому местоположению)

Если вам нужен только один веб-сайт (вероятно, на данном этапе), я бы рекомендовал удалить строку ServerName, потому что она вам не помогает (как рекомендовано Мануэлем Соуза), и использовать 127.0.0.1 локально и 192.168.11.74, когда вы в вашей рабочей сети.


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

  • Это может не сработать, если ваша внешняя сеть имеет динамический IP-адрес.
  • Это, скорее всего, помешает вашему компьютеру работать в вашей рабочей сети.

Опять же, я думаю, что такой подход - плохая идея, но вы можете судить сами: 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-адреса, что делает большинство, но сломается для вас)