我已购买有效的 SSL 证书。我有一个在端口 443 上运行的 Web 服务器,当我访问https://mydomain.com. 如何使用 iptables 转发所有 http 请求以使用 https?
谢谢
答案1
您不能直接使用 iptables 执行此操作,因为在第 3/4 层执行“重定向”将不允许进行 SSL 协商,因为客户端的浏览器仍将使用纯 HTTP。
您需要做的是使用 HTTP 302(或其他 300 级别)响应代码将用户重定向到您网站的 HTTPS 版本。这可以通过多种方式完成:
- 你的网络服务器软件的 URL 重写模块(例如使用 HTAccess 文件)
- 重定向客户端使用 JavaScript
- 您的网站的 HTTP 版本提供的文档中的 META 标记
- 您的网站的 HTTP 版本所提供文档的服务器端代码中的代码
- 在 Web 服务器上方的基础设施层中进行重定向(例如负载均衡器)
答案2
您不能使用 iptables 在协议之间进行重定向。您最多可以使用 iptables 将使用相同协议的某个连接重定向到另一个 IP 和/或端口。
因此,您所要求的是不可能的。
只需让您的网络服务器重定向该页面即可。或者在 http 站点上设置一个重定向到 https 站点的空索引页。