正如标题所暗示的那样,我正在尝试将我的服务器配置为使用 HTTPS 服务流量。我已经能够公开服务器并从中接收信息,只是没有 HTTPS。
我将介绍一些有趣的细节,但这是主要目标。
- 我在家庭网络上的 Raspberry Pi 上运行了一个 Go 服务器,我将其用作个人 API。
- 我将家庭网络的端口转发端口 80 和 443 指向我的 Raspberry Pi 的静态 IP 地址
- 我拥有一个指向我的家庭网络 IP 的域。
- 我的 go 服务器在端口 8088 上运行,所以我使用 Nginx 将请求从基本 IP 转发到我的服务器端口。
到目前为止,这一切都运行良好,除了我想让我的服务器使用 HTTPS。
我的问题是我在这个设置中有很多活动部件,那么什么负责确保 HTTPS:
- 域?
- 我的 Nginx 配置?
- 服务器本身?
- 以上所有的组合。
我不确定。
只是在寻找为此服务器启用 HTTPS 的一些方向,谢谢!
您的 Nginx 可以处理 http 和 https 请求。
将您的 nginx 设置为侦听端口 80 并将 80 请求重定向到 443。
在你的 nginx 中添加你的证书并将来自 443 的请求代理到 GO 服务器。
HTTPS 应该由 nginx 服务器处理,它应该侦听端口 443。它也可以侦听端口 80,但最好提供 HTTP 或重定向到 HTTPS(端口 443),因为这是正常行为。您不需要任何 DNS 配置。应用程序通常会将默认端口 80 识别为 HTTP,将 443 识别为 HTTPS。
最好是像 nginx 这样的应用程序能够处理正确处理高性能 HTTP 和 HTTPS 的困难,这样您就不需要为您的 Web 应用程序(即您的 Go API)考虑这些事情。请注意,您的 Nginx 和 Go 应用程序之间的连接不需要是 HTTPS,因为它们都在示例机器上。
查看此Linode 指南,了解如何为 HTTPS 和 Web 应用程序的反向代理设置 Nginx 配置。
此外,对于 HTTPS,您需要有一个由适当的授权机构(即证书链)签名的密钥对。由于这是您仅供自己使用的东西,您可以成为适当的授权机构并生成您自己的自签名证书。但使用Let's Encrypt也可能是最简单的方法,它将利用您拥有域的事实并向您颁发有效证书以用于您的站点(也在 Linode 指南中进行了解释)。