apache - Apache 将 example.com 重定向到 ec2 公共 DNS
问题描述
设置
Route 53 域example.com
有A
记录到id.cloudfront.net
和AAAA
记录到random-id.cloudfront.net
。
Cloudfront 的源域为 EC2 公共 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`
这些是我尝试过的事情。
- 添加
ServerName example.com
于/etc/apache2/apache2.conf
- 这个命令
sudo ufw allow in "Apache Full"
.htaccess
我的/var/www/html
文件夹里没有。
是 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 不会进行任何重定向。
解决方案
将问题追溯到HTTP_HOST
服务器接收到的 ec2 公共 DNS。因此,如果我访问了example.com/index.php
并且代码应该重定向到example.com/index2.php
它,则会重定向到ec.xxxxxx.amazonaws.com/index2.php
因为HTTP_HOST = ec.xxxxxx.amazonaws.com
.
通过将 CloudFront Distribution 的行为更新为转发Host
值来修复。
所以,如果我访问example.com
主机值将是example.com
如果我访问id.cloudfront.net
,那么主机值将是id.cloudfront.net
.
https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23
推荐阅读
- php - 避免在后期操作 PHP 中重定向
- kotlin - 什么是让记录器始终在其执行期间生成的所有日志上添加测试方法名称的优雅方法?
- raft - 如果在 Raft 中的两个节点(只有一个领导者和一个候选人)的情况下,follower 失去了它的领导者怎么办?
- react-native - 抽屉中的子菜单 - React Native
- visual-studio - Visual Studio 与 Win CE 5/6/7 平台的兼容性
- reactjs - 打字稿:找不到“bin”、“src”、“test”的类型定义文件
- oracle - 在 Oracle 中按名称访问记录字段
- python - Python:在 Selenium Ms.Edge(铬)Webdriver 中禁用图像
- php - 缩小使用 sort() 函数的 PHP 代码
- java - 在井字游戏中确定获胜者时,如何避免重复?