настройка vhost поддомена с EC2/Route53
В настоящее время я пытаюсь настроить новый поддомен через route53 и ec2, но получаю ошибки таймаута всякий раз, когда я пытаюсь получить доступ к нему через мой браузер. Amazon security group настроена так, чтобы разрешать весь трафик через порт 80.
Я писал последующей файл виртуальных доменов и хранили ее под сайты-доступны как "новый.мой_сайт.ком.конф" :
<VirtualHost *:80>
ServerName new.mysite.com
RewriteEngine On
#RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
DocumentRoot /var/www/newmysite
<Directory /var/www/newmysite>
DirectoryIndex index.php
AllowOverride All
</Directory>
</VirtualHost>
Я включил этот запуск;
a2ensite new.mysite.com.conf
service apache2 reload
Наконец, под route53 я установил новую запись A, заданную как non-alias, и указывающую на публичный IP сервера EC2 как перечислены в разделе Мои запущенные экземпляры.
Я убедился, что тестовая страница доступна в разделе var/www/newmysite/index.php, наряду с созданием резервной копии var / www / newmysite / index.html для доступа.
Сам поддомен просто дает тайм-аут. Попадание на публичный IP-адрес сервера напрямую дает значение по умолчанию apache2 "это работает!" страница.
Есть ли у кого-нибудь идеи о том, что я здесь делаю неправильно?
2 ответа:
Существует правило перенаправления с HTTP на HTTPS
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Я предполагаю, что когда вы нажмете
new.mysite.com
он перенаправляет на HTTPshttps://new.mysite.com
, так как нет SSL-enabled VirtualHost(443) и нет слушателя на 443 соединение отказано.Попробуйте отключить правило перенаправления или вы можете попробовать использовать Самозаверяющий сертификат или настроить ELB для использования сертификата ACM и указать домен Route53 на ELB.
curl -v -L http://new.mysite.com * Rebuilt URL to: http://new.mysite.com/ * Trying 10.116.131.69... * Connected to new.mysite.com (10.116.131.69) port 80 (#0) > GET / HTTP/1.1 > Host: new.mysite.com > User-Agent: curl/7.43.0 > Accept: */* > < HTTP/1.1 301 Moved Permanently * Issue another request to this URL: 'https://new.mysite.com/' * Found bundle for host new.mysite.com: 0x7ff7a3c0fbc0 * Trying 10.116.131.69... * connect to 10.116.131.69 port 443 failed: Connection refused * Failed to connect to new.mysite.com port 443: Connection refused * Closing connection 1 curl: (7) Failed to connect to new.mysite.com port 443: Connection refused
Как и упоминалось в предыдущем ответе, существует перенаправление SSL. SSL использует порт
443
, который не доступен в вашей группе безопасности.
- измените группу безопасности, чтобы разрешить весь трафик через порт
443
. Это позволяет получить доступ к веб-сайту черезhttps
- установите и настройте сертификат SSL для домена. Вы можете установить бесплатный сертификат от Let's Encrypt. Выполните следующие действия:
- установите Certbot, бота, который автоматически обновляет ваш сертификат до истечения 90-дневного срока действия
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
sudo apt-get install python-certbot-apache
- настройте новый сертификат для вашего поддомена
sudo certbot --apache -d new.mysite.com
Теперь ваш сайт должен быть запущен и работать на https.
ПС. при написании этого ответа я заметил, что вы отключили перенаправление
http
https
Вы можете включить его снова после включения https на веб-сайте. Это гарантирует, что все коммуникации ваш сайт безопасен.