настройка 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 5

2 ответа:

Существует правило перенаправления с HTTP на HTTPS

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Я предполагаю, что когда вы нажмете new.mysite.com он перенаправляет на HTTPs https://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, который не доступен в вашей группе безопасности.

  1. измените группу безопасности, чтобы разрешить весь трафик через порт 443. Это позволяет получить доступ к веб-сайту через https
  2. установите и настройте сертификат 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 на веб-сайте. Это гарантирует, что все коммуникации ваш сайт безопасен.