使用EC2 / Route53进行子域VHost设置

时间:2018-03-07 17:39:35

标签: apache amazon-ec2 ubuntu-16.04 amazon-route53

我正在尝试通过route53和ec2设置一个新的子域,但每当我尝试通过浏览器访问它时都会收到超时错误。设置Amazon安全组以允许通过端口80的所有流量。

我编写了以下vhosts文件,并将其存储在“new.mysite.com.conf”可用的网站下:

<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 Record,设置为非别名,并指向我正在运行的实例下列出的EC2服务器的公共IP。

我确保在var / www / newmysite / index.php下可以使用测试页面,同时创建备份var / www / newmysite / index.html以进行访问。

子域本身只是暂停。直接点击服务器的公共IP给出默认的apache2“它工作!”页。

有人会对我在这里做错了什么有任何想法吗?

2 个答案:

答案 0 :(得分:4)

从HTTP到HTTPS的重定向规则

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

我想当你点击new.mysite.com时,它会重定向到HTTP https://new.mysite.com,因为没有启用SSL的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

答案 1 :(得分:1)

就像上一个回答中提到的那样,有一个SSL重定向。 SSL使用未在您的安全组中公开的端口443

  1. 修改安全组以允许通过端口443的所有流量。这样可以通过https
  2. 访问网站 域名
  3. Install and configure SSL certificate。您可以从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
  4. 现在,您的网站应该在https上启动并运行。

    PS。在写这个答案时,我注意到你关闭了http重定向https,你可能想在网站上启用https后重新启用此功能。这可确保您网站的所有通信都是安全的。