Я использую CloudFlare для DNS и Digital Ocean для серверов.
Назовем мой сайт "example.com". Он работает нормально.
Теперь я создал второй сервер, у которого другой IP. Я хочу, чтобы новый поддомен «staging.example.com» указывал на этот второй IP.
В CloudFlare я попытался создать вторую запись «A». Вот экспорт моих настроек (частично отредактирован, а также изменен, чтобы использовать пример доменного имени):
;; 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 Connection» истекло время ".
Что я делаю не так? Как сделать так, чтобы субдомен указывал на IP-адрес, отличный от его родительского домена?
P.S. Я подумал , что, возможно, проблема была в моей конфигурации Nginx, но теперь я сомневаюсь, что это проблема, потому что я смог временно изменить ее на example2.com вместо staging.example.com, а затем временно изменить CloudFlare DNS этого другого домена, которым я владею (example2.com), и он загрузился нормально.
PPS Теперь для целей отладки моя конфигурация Nginx говорит:
server_name staging.example.com example2.com;
И я оставил запись субдомена «A» в CloudFlare DNS как «Только DNS» (серое облако).
Затем в моем CloudFlare DNS для example2.com (другой домен, которым я владею) я временно указал на 157. ■■■ .174.87.
И просмотр staging.example.com приводит к следующему: «Этот сайт может Ответить на staging.example.com не удалось. ERR_CONNECTION_TIMED_OUT ».
Но просмотр example2.com работает.
Это наводит меня на мысль, что конфигурация Nginx в порядке. Правильно? Так что же не так?
Я думаю, что первая проблема заключалась в том, что мои правила страниц перенаправляли http на https, и я временно закомментировал части SSL в конфигурации Nginx.
После раскомментирования частей SSL, теперь при переходе на https://staging.example.com/ получается:
400 неверный запрос
Требуемый сертификат SSL не был отправлен
, что является отдельной проблемой, которую я теперь иди решай.
You можно использовать следующий скрипт для создания поддомена на вашем сервере
#!/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