Как создать поддомен на локальном сервере?

Ссылка скопирована
4 мая 2026 1 ответ

Доброй ночи. Прошу помощи, не могу собрать мозги в кучу.
Дано:
Домен www.site.ru с SSL-сертификатом от Cloudflare для хостов *.site.ru и site.ru. В DNS соответственно A-запись site.ru 20.20.20.20.
Локальный web-сервер на IP 10.10.10.10 с поднятым apache2.
Mikrotik со статическим IP 20.20.20.20. С него идет перенаправление с портов 80 и 443 на 10.10.10.10.
В папке /var/www есть 2 папки sitedir1 (основной сайт, который открывается при переходе на site.ru) и sitedir2 (второй сайт, который надо прикрутить к домену sub.site.ru).

Конфиги в /etc/apache2/sites-enable:
site.ru

<VirtualHost *:80>     Define root_domain 10.10.10.10     ServerName ${root_domain}     Redirect / https://${root_domain} </VirtualHost>  <VirtualHost *:443>     Define root_domain 10.10.10.10     Define root_path /var/www/sitedir1      ServerName ${root_domain}     DocumentRoot ${root_path}      SSLEngine on     SSLCertificateFile      /etc/ssl/cert.pem     SSLCertificateKeyFile   /etc/ssl/key.pem     SSLCertificateChainFile /etc/ssl/origin_ca_rsa_root.pem      <IfModule mod_headers.c>         Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"     </IfModule>     <Directory ${root_path}>         AllowOverride All         Require all granted     </Directory> </VirtualHost>

<VirtualHost *:80> Define root_domain 10.10.10.10 ServerName ${root_domain} Redirect / https://${root_domain} </VirtualHost> <VirtualHost *:443> Define root_domain 10.10.10.10 Define root_path /var/www/sitedir1 ServerName ${root_domain} DocumentRoot ${root_path} SSLEngine on SSLCertificateFile /etc/ssl/cert.pem SSLCertificateKeyFile /etc/ssl/key.pem SSLCertificateChainFile /etc/ssl/origin_ca_rsa_root.pem <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" </IfModule> <Directory ${root_path}> AllowOverride All Require all granted </Directory> </VirtualHost>

sub.site.ru

<VirtualHost *:80>     Define root_domain 10.10.10.10     ServerName ${root_domain}     Redirect / https://${root_domain} </VirtualHost>  <VirtualHost *:443>     Define root_domain 10.10.10.10     Define root_path /var/www/sitedir2      ServerName ${root_domain}     DocumentRoot ${root_path}      SSLEngine on     SSLCertificateFile      /etc/ssl/cert.pem     SSLCertificateKeyFile   /etc/ssl/key.pem     SSLCertificateChainFile /etc/ssl/origin_ca_rsa_root.pem      <IfModule mod_headers.c>         Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"     </IfModule>     <Directory ${root_path}>         AllowOverride All         Require all granted     </Directory> </VirtualHost>

<VirtualHost *:80> Define root_domain 10.10.10.10 ServerName ${root_domain} Redirect / https://${root_domain} </VirtualHost> <VirtualHost *:443> Define root_domain 10.10.10.10 Define root_path /var/www/sitedir2 ServerName ${root_domain} DocumentRoot ${root_path} SSLEngine on SSLCertificateFile /etc/ssl/cert.pem SSLCertificateKeyFile /etc/ssl/key.pem SSLCertificateChainFile /etc/ssl/origin_ca_rsa_root.pem <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" </IfModule> <Directory ${root_path}> AllowOverride All Require all granted </Directory> </VirtualHost>

Конфиг /etc/hosts:
10.10.10.10 site.ru
10.10.10.10 sub.site.ru

---
Не могу заставить работать сайт на sub.site.ru. Подскажите правильный алгоритм, пожалуйста.

Дополнительно:

Конфиги нужно бы оформлять тегом code, но оба виртуальных хоста имеет одинаковое имя в ServerName ${root_domain}
Даже не так, там айпи, а должно быть имя хоста site.ru & sub.site.ru соответственно:
Define root_domain site.ru

Возможно после исправления не взлетит, но тогда нужно нормально оформить конфиги для дальнейшего траблшутинга.

  • Поправил.
    ServerName ${root_domain} - одинаковый, да.
    Но как его сделать разным, если IP один?
  • Денис Давыденко, кого сделать разным?
    Уберите define root_domain, пропишите явно
    ServerName site.ru

    в первом конфиги и
    ServerName sub.site.ru

    Во втором.

  • akelsey, сделал. 1 сайт открывается, 2 нет.

    Не удается получить доступ к сайту.
    Не удалось найти IP-адрес сервера:

  • akelsey, а про кэш ДНС я и забыл. Все получилось, спасибо
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

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

1. **Измените файл hosts:**
- Откройте файл hosts на вашем компьютере. В Windows это файл hosts находится в папке C:\Windows\System32\drivers\etc\, а в macOS и Linux - /etc/hosts.
- Добавьте следующую строку в файл hosts, заменив example.com на желаемый поддомен:
```
127.0.0.1 subdomain.example.com
```

2. **Настройте веб-сервер:**
- Откройте конфигурационный файл веб-сервера (например, httpd.conf для Apache).
- Добавьте виртуальный хост для вашего поддомена. Пример конфигурации для Apache:

 
         ServerName subdomain.example.com
         DocumentRoot "путь_к_папке_проекта"

ServerName subdomain.example.com DocumentRoot "путь_к_папке_проекта"

3. **Перезапустите веб-сервер:**
- После внесения изменений в конфигурационные файлы веб-сервера, перезапустите сервер, чтобы изменения вступили в силу.

4. **Проверьте поддомен:**
- Теперь вы можете открыть браузер и ввести адрес subdomain.example.com. Если все настроено правильно, вы увидите свой проект, размещенный на поддомене.

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно