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

Доступ к Apache VirtualHost с локального хоста

У меня есть установка DirectAdmin с Apache на сервере, который находится за NAT.

Все работает правильно при доступе к VirtualHost извне компьютера (либо через Интернет, либо через интранет), но у меня возникают проблемы при доступе к тому же VirtualHost с локального хоста (т.е. при использовании curl mywebsite.com внутри сервера).

Соответствующие сетевые устройства:

eth0   : IP Address inside the NAT
eth0:0 : IP Address outside the NAT (i.e. public IP Address)
eth1   : LAN IP Address
lo     : Loopback

Ниже представлена ​​соответствующая конфигурация httpd:

Listen 80
NameVirtualHost *:80

DocumentRoot "/var/www/html"

<VirtualHost *:80>
  ServerName mydomain.com
  ...
</VirtualHost>

При использовании подстановочного знака NameVirtualHostможно было бы ожидать запроса с Host: mydomain.com директива, установленная в заголовке запроса (который curl делает) для обслуживания VirtualHost директива. Хотя, когда я curl mydomain.com изнутри сервера, откат Apache к DocumentRoot не позволяя мне получить доступ к VirualHost хост.

Единственный способ заставить его работать - это отредактировать /etc/hosts и определите IP внутри NAT для mydomain.com.

Еще одна полезная информация:

Я побежал <?php print_r($_SERVER); ?> на тестовой странице как внутри, так и вне сервера, чтобы проверить значения для SERVER_IP и когда я curl с удаленной машины я получаю IP-адрес внутри NAT, но когда я curl изнутри сервера я получаю общедоступный IP-адрес.

Домен преобразуется в один и тот же IP-адрес на обоих концах (внутри и вне сервера).

Наилучшие пожелания.

Ты можешь использовать http://xip.io чтобы определить временный домен для вашего виртуального хоста, используя IP-адрес вашего компьютера.

Просто и легко;)