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

Как я могу просматривать веб-сайт на моем сервере, не назначая ему доменное имя?

У меня есть сервер с vhosts conf, который выглядит так:

NameVirtualHost *:80

# My Virtual Hosts:
<VirtualHost *:80>
     ServerAdmin admin@email.com
     ServerName domain

     DirectoryIndex index.php index.html
     DocumentRoot /var/www/domain/public

     # Custom log file locations
     LogLevel warn

     ErrorLog /var/www/domain/log/error_log
     CustomLog /var/www/domain/log/access_log combined

     <Directory "/var/www/dailysongfix/public">
         Options Indexes FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
     </Directory>
</VirtualHost>

Типичный vhost conf, правда? Ну, мне также нужно разработать несколько других сайтов на сервере, и к этим сайтам еще не подключены домены. Как я могу просмотреть их, не указывая на них домен? Я предполагаю, возможно, IP-адрес и порт, но не знаю, как это настроить.

Если вы собираетесь использовать именованные виртуальные хосты, вам необходимо назначить некоторые имя на сервер. В вашем примере к хосту будет обращаться по имени domain (из ServerName domain директива). Вы можете попробовать связаться с вашим сервером по IP-адресу напрямую, выполнив что-то вроде http://123.45.67.89/ но это не заставит Apache запускать именованный виртуальный хост. Для этого вам нужно будет добавить что-то подобное в свой /etc/hosts файл на клиенте:

123.45.67.89    domain

Тогда вы сможете использовать http://domain/ в вашем браузере. Это устанавливает сопоставление между именем и IP-адресом локально без необходимости возиться с DNS.

Это работает так: когда браузер отправляет HTTP-запрос на сервер, он включает любой текст, который он использовал после // в URL в Host: заголовок. Apache берет этот текст в Host: заголовок и сопоставляет его с ServerName значения в каждом названном виртуальном хосте. Когда он находит совпадение, он использует его как сервер для обработки остальной части запроса. Apache делает не необходимо найти соответствие между именем хоста и IP-адресом, поэтому это работает, если вы изменяете только конфигурацию клиентского компьютера.

Используйте «Alias» вместо VirtualHost, это должно работать нормально, если вашим PHP-приложениям не требуется фиксированный URL.

Изменить: вы можете добавить псевдонимы к конфигурации, которую вы вставили выше, просто добавьте их перед контейнером.

возможно, это не лучший способ, но вы всегда можете сделать следующее:

  1. создать запись DNS * .example.com, которая указывает на IP-адрес вашего сервера
  2. пользователь ServerAlias ​​в каждом определении виртуального хоста, например: ServerAlias ​​something.example.com

Я знаю, что знаю - это не совсем то, о чем вы просили, но я думаю, что это может решить вашу проблему.

в качестве альтернативы, если ваши vhosts имеют точно такую ​​же конфигурацию, просто поместите свои веб-страницы в / где-нибудь / {nameOfDomain}, а затем поделитесь / где-нибудь как другой vhost. тогда вы сможете получить доступ к любой странице, перейдя в http: // myVhost /{nameOfDomain}. это может вызвать некоторую угрозу безопасности, если в vhosts у вас есть правила доступа [которые, вероятно, не будут включены в конфигурацию 'другого vhost'].

На любом стандартном пакете apache будет настроен для использования через IP-адрес. у которого в основном нет виртуального хоста