Я использую CloudFlare для DNS и Digital Ocean для серверов.
Назовем мой сайт "example.com". Работает нормально.
Теперь я создал второй сервер с другим IP. Я хочу, чтобы новый поддомен "staging.example.com" указывал на этот второй IP-адрес.
В CloudFlare я попытался создать вторую запись «А». Вот экспорт моих настроек (частично отредактирован, а также изменен, чтобы использовать пример доменного имени):
;; A Records
example.com. 1 IN A 192.■■■.135.106
staging.example.com. 1 IN A 157.■■■.174.87
Переход на example.com по-прежнему работает.
Однако при переходе на сайт staging.example.com возникает «Ошибка 522 Время ожидания соединения истекло».
Что я делаю не так? Как сделать так, чтобы субдомен указывал на IP-адрес, отличный от его родительского домена?
P.S. я мысль возможно, проблема была в моей конфигурации Nginx, но теперь я сомневаюсь, что это проблема, потому что я смог временно изменить ее на example2.com вместо staging.example.com, а затем временно изменить CloudFlare DNS этого другого домена, которым я владею (example2.com), и он загрузился нормально.
P.P.S. Теперь для целей отладки моя конфигурация Nginx говорит:
server_name staging.example.com example2.com;
И я оставил запись субдомена «A» в CloudFlare DNS как «Только DNS» (серое облако).
Затем в моем DNS CloudFlare для example2.com (другой принадлежащий мне домен) я временно указал его на 157. ■■■ .174.87.
А переход на staging.example.com приводит к появлению сообщения «Этот сайт недоступен. Staging.example.com не отвечает слишком долго. ERR_CONNECTION_TIMED_OUT ».
Но переход на example2.com работает.
Это заставляет меня думать, что конфигурация Nginx в порядке. Правильно? Так что не так?
Вы можете использовать следующий скрипт для создания поддомена на вашем сервере
#!/bin/bash
echo "Enter Subdomain You want to add (Eg:blog)"
read subdomain
echo "Enter your domain name (Eg:example.com)"
read domain
sudo chmod -R 755 /etc/apache2/
cd /etc/apache2/sites-available/
cat <<EOF >$subdomain.$domain.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/$subdomain
ServerAlias $subdomain.$domain
ServerName $subdomain.$domain
<Directory /var/www/$subdomain>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
# remove following four lines if http authentication not required or not set up#
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
</VirtualHost>
EOF
mkdir /var/www/html/$subdomain
echo " Add your files to /var/www/html/$subdomain "
echo "enabling subdomain................"
sudo a2ensite $subdomain.$domain
echo "Reloading apache2 ................"
sudo service apache2 reload
Я думаю, что первая проблема заключалась в том, что мои правила страниц перенаправляли http на https, и я временно закомментировал части SSL в конфигурации Nginx.
После раскомментирования частей SSL, теперь просматриваем https://staging.example.com/ приводит к:
ошибка 400, неверный запрос
Требуемый сертификат SSL не был отправлен
это совершенно отдельная проблема, которую я сейчас решу.