Apache 重定向 example.com 到 ec2 public DNS
Apache redirecting example.com to ec2 public DNS
设置
Route 53 域 example.com
有 A
记录到 id.cloudfront.net
和 AAAA
记录到 random-id.cloudfront.net
。
Cloudfront 的原始域为 EC2 public DNS ec.xxxxxx.amazonaws.com
,备用域为 example.com
。此外,它还有 SSL/TLS 的 AWS 证书(目前它接受 HTTP 和 HTTPS 请求)
EC2 是一个 Ubuntu-20.04 AMI,具有 apache2
、php7.4
和 phpmyadmin
,全部使用 apt-get
.
安装
问题 是每当我输入 example.com/*
时,网站会自动重定向到 ec.xxxxxx.amazonaws.com/*
。
示例:
example.com/phpmyadmin
被重定向到 ec.xxxxxx.amazonaws.com/phpmyadmin/
.
- 我尝试设置 wordpress,
example.com
重定向到 http://ec2-xxxxxx.amazonaws.com/wp-admin/setup-config.php`
这些是我尝试过的东西。
- 在
/etc/apache2/apache2.conf
中添加了 ServerName example.com
- 这个命令
sudo ufw allow in "Apache Full"
- 我的
/var/www/html
文件夹中没有 .htaccess
。
这是 Cloudfront 还是 Apache 问题?这是我第一次使用 AWS 和 Apache 并尝试了解它的工作原理。
似乎超出范围的解决方案:
- https://serverfault.com/questions/685654/apache-server-config-redirect-from-ip-to-domain-name-ec2
- 或任何包括在根目录创建
.htaccess
的东西,因为我认为这会造成无限循环。
如果需要,我可以提供更多信息。
更新:
- 从 route53 中删除了 A 和 AAAA 记录。没用。
- 此外,将
ServerName example.com
添加到 /etc/apache2/sites-enabled/000-default.conf
- 此外,访问
random-id.cloudfront.net
也会进行相同的重定向。
- 但是访问elastic-IP不做任何重定向
如果我正确理解了您的设置,您可能需要 CNAME 而不是 Route53 中的 A 记录
将问题追踪到 HTTP_HOST
是服务器接收到的 ec2 public DNS。因此,如果我访问了 example.com/index.php
并且代码应该重定向到 example.com/index2.php
它会改为重定向到 ec.xxxxxx.amazonaws.com/index2.php
因为 HTTP_HOST = ec.xxxxxx.amazonaws.com
.
已通过更新 CloudFront 分发的行为以转发 Host
值来修复。
所以,如果我访问 example.com
,主机值将是 example.com
如果我访问 id.cloudfront.net
,那么主机值将是 id.cloudfront.net
。
https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23
设置
Route 53 域 example.com
有 A
记录到 id.cloudfront.net
和 AAAA
记录到 random-id.cloudfront.net
。
Cloudfront 的原始域为 EC2 public DNS ec.xxxxxx.amazonaws.com
,备用域为 example.com
。此外,它还有 SSL/TLS 的 AWS 证书(目前它接受 HTTP 和 HTTPS 请求)
EC2 是一个 Ubuntu-20.04 AMI,具有 apache2
、php7.4
和 phpmyadmin
,全部使用 apt-get
.
问题 是每当我输入 example.com/*
时,网站会自动重定向到 ec.xxxxxx.amazonaws.com/*
。
示例:
example.com/phpmyadmin
被重定向到ec.xxxxxx.amazonaws.com/phpmyadmin/
.- 我尝试设置 wordpress,
example.com
重定向到 http://ec2-xxxxxx.amazonaws.com/wp-admin/setup-config.php`
这些是我尝试过的东西。
- 在
/etc/apache2/apache2.conf
中添加了 - 这个命令
sudo ufw allow in "Apache Full"
- 我的
/var/www/html
文件夹中没有.htaccess
。
ServerName example.com
这是 Cloudfront 还是 Apache 问题?这是我第一次使用 AWS 和 Apache 并尝试了解它的工作原理。
似乎超出范围的解决方案:
- https://serverfault.com/questions/685654/apache-server-config-redirect-from-ip-to-domain-name-ec2
- 或任何包括在根目录创建
.htaccess
的东西,因为我认为这会造成无限循环。
如果需要,我可以提供更多信息。
更新:
- 从 route53 中删除了 A 和 AAAA 记录。没用。
- 此外,将
ServerName example.com
添加到/etc/apache2/sites-enabled/000-default.conf
- 此外,访问
random-id.cloudfront.net
也会进行相同的重定向。 - 但是访问elastic-IP不做任何重定向
如果我正确理解了您的设置,您可能需要 CNAME 而不是 Route53 中的 A 记录
将问题追踪到 HTTP_HOST
是服务器接收到的 ec2 public DNS。因此,如果我访问了 example.com/index.php
并且代码应该重定向到 example.com/index2.php
它会改为重定向到 ec.xxxxxx.amazonaws.com/index2.php
因为 HTTP_HOST = ec.xxxxxx.amazonaws.com
.
已通过更新 CloudFront 分发的行为以转发 Host
值来修复。
所以,如果我访问 example.com
,主机值将是 example.com
如果我访问 id.cloudfront.net
,那么主机值将是 id.cloudfront.net
。
https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23