Почему я не могу открыть сайт, используя его название?

Здравствуйте! 

Я установил Ubuntu Server на один ноутбук и Ubuntu Desktop на другой. На сервере настроил Apache и развернул простой HTML-сайт. Компьютеры подключены друг к другу с помощью патч-корда. На клиентском ПК сайт открывается только по IP-адресу, но не по имени. 

Для сетевой карты сервера я указал адрес 192.168.1.4, и по нему сайт корректно открывается на клиенте. Клиентский ПК имеет адрес 192.168.1.1. Также я заметил, что серверный ПК успешно пингуется по имени, а на клиенте — нет. 

Судя по всему, основными файлами для настройки являются /etc/apache2/sites-available/mysite1.conf и /etc/hosts. 

Как я могу настроить так, чтобы сайт открывался по имени? Также, как сервер обрабатывает несколько сайтов (виртуальных хостов) с одним IP-адресом?
  • 10 апреля 2025 г. 5:45
Ответы на вопрос 1
Здравствуйте!

Для доступа к вашему веб-сайту по имени, вам нужно настроить разрешение имен на клиентском ПК. Вот несколько шагов, которые помогут решить вашу проблему:

### 1. Настройка файла `/etc/hosts` на клиентском ПК

На клиентском ПК (Ubuntu Desktop) откройте файл `/etc/hosts` с помощью текстового редактора с правами суперпользователя. Например, выполните команду:

```bash
sudo nano /etc/hosts
```

Добавьте в конец файла строку, указывающую на IP-адрес вашего сервера и имя, под которым вы хотите обращаться к сайту. Например, если ваш сайт называется `mysite.local`, добавьте следующую строку:

```
192.168.1.4 mysite.local
```

Сохраните изменения и закройте текстовый редактор (в nano это можно сделать, нажав `Ctrl+X`, затем `Y` и `Enter`).

Теперь вы должны иметь возможность открыть сайт, введя `http://mysite.local` в браузере на клиентском ПК.

### 2. Настройка виртуальных хостов на сервере

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

1. Создайте файл конфигурации для каждого сайта в `/etc/apache2/sites-available/`. Например, если у вас есть второй сайт, создайте файл:

   ```bash
   sudo nano /etc/apache2/sites-available/mysite2.conf
   ```

   Внутри файла вы можете использовать следующий шаблон:

   ```apache
   <VirtualHost *:80>
       ServerName mysite2.local
       DocumentRoot /path/to/mysite2

       <Directory /path/to/mysite2>
           Options Indexes FollowSymLinks
           AllowOverride None
           Require all granted
       </Directory>

       ErrorLog ${APACHE_LOG_DIR}/mysite2_error.log
       CustomLog ${APACHE_LOG_DIR}/mysite2_access.log combined
   </VirtualHost>
   ```

2. Включите новый виртуальный хост, используя команду:

   ```bash
   sudo a2ensite mysite2.conf
   ```

3. Перезапустите Apache, чтобы применить изменения:

   ```bash
   sudo systemctl restart apache2
   ```

4. Не забудьте добавить в файл `/etc/hosts` на клиентском ПК соответствующие записи для нового сайта, как вы сделали для первого.

### 3. Проверка конфигурации Apache

Убедитесь, что конфигурация Apache корректна, выполнив команду:

```bash
sudo apache2ctl configtest
```

Если в выводе нет ошибок, вы можете перезапустить Apache.

Теперь ваши виртуальные хосты должны обрабатывать запросы на основе имен, и вы можете открывать сайты, используя их имена, а не IP-адреса.

Если у вас есть вопросы по настройке или возникли какие-либо проблемы, не стесняйтесь спрашивать!
Похожие вопросы