【问题标题】:subdomain VHost setup with EC2/Route53使用 EC2/Route53 设置子域 VHost
【发布时间】:2018-08-15 22:06:29
【问题描述】:

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

我已确保在 var/www/newmysite/index.php 下提供了一个测试页面,同时创建了一个备份 var/www/newmysite/index.html 以供访问。

子域本身只是给出了一个超时。直接点击服务器的公共 IP 会给出默认的 apache2 “它可以工作!”页面。

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

【问题讨论】:

  • 你能分享一下你说你设置的A记录中指定的域名吗?

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


【解决方案1】:

有一个从 HTTP 到 HTTPS 的重定向规则

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

我猜当您点击 new.mysite.com 时,它会重定向到 HTTPs 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

【讨论】:

    【解决方案2】:

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

    1. 修改安全组以允许所有流量通过端口443。这可以通过https 访问网站
    2. 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

    现在您的网站应该在 https 上启动并运行。

    ps。在撰写此答案时,我注意到您已关闭 http 重定向 https 您可能希望在网站上启用 https 后将其重新打开。这可确保与您网站的所有通信都是安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 2018-05-24
      • 1970-01-01
      • 2015-09-18
      • 2018-12-01
      • 2018-07-09
      • 2020-04-25
      • 1970-01-01
      相关资源
      最近更新 更多