我通过 GoDaddy 拥有域名,我使用 CloudFlare 作为我的 DNS,虽然我有一个 SSL 证书。我的托管在 AWS 上。
当我通过我的域名访问该网站时,会强制执行 SSL,如果我通过 http 访问,它会被重定向到 https - 这正是我想要的。
但是,当我通过 EC2 域访问它时,未强制执行 SSL,大概是因为它不在 Cloud Flare 的证书上。
我的问题是,如果不将 EC2 域保留在为 SSL 强制执行的生产站点上,是否存在危险?我尝试跟踪我的域的来源,但它只能返回到强制使用 SSL 的 CloudFlare,所以我认为不可能将站点跟踪回 EC2 域?
最佳答案
为防止客户绕过 Cloudflare 并直接访问您的网站,您需要通过您在 Cloudflare 注册的域名将他们重定向回来。这将产生强制 HTTPS 的副作用。
我假设:
- Cloudflare 正在终止 SSL,您的网络服务器仅运行 HTTP。
假设您的网络服务器是 Apache,有几种方法。
使用服务器别名重定向。像这样修改您的 VirtualHost 条目:
<VirtualHost *:80>
ServerAlias ec2-public-ipv4-address.compute-1.amazonaws.com
redirect permanent / https://www.yoursite.com
</VirtualHost>
或修改您的网络服务器根目录中的 .htaccess
。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ec2-public-ipv4-address.compute-1.amazonaws.com$
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R=301,L]
将上面的 DNS 名称更改为您实际的 EC2 公共(public) DNS 名称。
如果他们使用公共(public) IP 地址访问您的网站,您会想要做同样的事情。
将此规则添加到 .htaccess
:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^12\.34\.56\.789$
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301]
将上面的数字替换为您的公共(public) IP 地址。保留 IP 地址中的点 .
用反斜杠转义,例如 \.
关于ssl - 是否有必要在与生产服务器的 EC2 链接上强制使用 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240267/