使用 CDN 分发的 Amazon Lightsail 的防火墙配置

Firewall config for Amazon Lightsail with CDN distribution

我设置了一个 Amazon Lightsail (Wordpress) 服务器,并使用 CDN 分发和自定义域和 SSL 证书,如 this official article 中所述。一切正常,我能够从云端分发的 HTTPS 终止端点(使用自定义域)访问该站点。

问题是我仍然可以在服务器的静态 public IP 地址(这是 cloudfront 连接到的来源)上通过 http 和 https 直接访问站点。我进入 Networking->IPv4 Firewall 并禁用了 HTTPS,因为我读到 cloudfront 将仅使用 http 连接到源。但是,我不确定如果我也禁用 http 是否会起作用,而且我对为什么亚马逊从未在文档中提及这一点感到有些困惑。当通过 cloudfront 提供 lightsail 时,我们是否应该让 HTTP/HTTPS 端口在防火墙中保持打开状态,还是应该将其限制在 cloudfront 的代理客户端的 IP 范围内?我知道通常让代理服务器对 public 开放可能会导致某些代码(或 wp 插件)出现(安全)问题,这些代码(或 wp 插件)总是从反向代理后面调用,以及性能问题和可能的其他问题如果人、机器人或黑客直接连接到服务器而不是通过 CDN。

这篇文章可能是您要查找的内容:Access An Application Using Only A Single Domain With Apache.

我自己 我按照最后一段的说明操作:

“将所有域重定向到您自己的域并强制使用 HTTPS”

要将所有域重定向到您自己的域并强制使用 HTTPS,请将以下配置添加到 /opt/bitnami/apache2/conf/bitnami/bitnami.conf 文件中。

记得用自己的域名替换example.com。

    <VirtualHost _default_:80>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
RewriteRule ^(.*)$ https://example.com [R=permanent,L]
...

<VirtualHost _default_:443>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example.com$
RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
RewriteRule ^(.*)$ https://example.com [R=permanent,L]
...

通过将上述配置添加到您的 bitnami.conf 文件,它将强制为您的网站使用 HTTPS 协议,并将所有流量从您的静态 IP 地址重定向到您的域名。要将您的分发和源之间的通信协议更改为 https,您需要在 Lightsail 实例的 Cloudfront 分发上安装 SSL 证书,并在源 IP 地址上安装 SSL 证书。

要访问文件 /opt/bitnami/apache2/conf/bitnami/bitnami.conf,您必须使用 FTP 或 SSH 连接到您的静态 IP。您可以使用 Filezilla.

这样的程序轻松完成此操作