node.js - 如何在 Pivotal Cloud Foundry 中使用证书启动 HTTPS Node JS 服务器?
问题描述
是否可以在 Cloud Foundry 上部署一个 node.js 应用程序来侦听端口 443 上的 HTTPS 请求?
解决方案
好吧,好消息是您不必这样做。Cloud Foundry 平台会为您处理。
您需要做的就是推送您的应用程序并为该应用程序分配一条路线。您的平台运营团队已经完成了所有设置,以便 HTTP 和 HTTPS 的流量都能路由到您的应用程序。
您可能想要在应用程序中做的唯一一件事就是查看x-forwarded-proto
(应该是 http 或 https)或x-forwarded-port
(80 或 443)标头。您可以使用它来确定客户端的连接是通过 HTTP 还是 HTTPS,如果是 HTTP,则发出重定向以要求客户端通过 HTTPS 连接(这会强制客户端使用 HTTPS)。
您可以在以下链接的文档中阅读更多相关信息:
https://docs.cloudfoundry.org/adminguide/securing-traffic.html
说了这么多,如果你真的想出于某种原因控制证书,你可以这样做。您需要将TCP 路由映射到您的应用程序。这将使 TCP 流量直接流向您的应用程序。然后,您可以将您的应用程序配置为映射的 TCP 路由和端口上的 HTTPS 端点。
关于这一点的一些注意事项:
- 您几乎肯定会得到一些高编号的端口,而不是 443。该平台将有一个可用端口池,由您的运营团队配置,您只能使用这些端口。
- 平台和 buildpack 无助于设置 TLS,您需要自己处理所有这些。好消息是它的工作方式应该与您的应用程序在 VM 或本地笔记本电脑上运行时完全相同。
- 您将需要创建自己的 TLS 证书并将其与应用程序一起推送。您可能可以使用Let's Encrypt,但如果您为一家大公司工作,您可能需要通过您的雇主获得这些。
推荐阅读
- php - 正则表达式 - preg_replace - 一个返回空格,另一个不返回任何内容
- android - 在 Windows 10 上没有 android studio 环境的 React Native
- reactjs - React-Table Hooks - 更改页面时重置 pageIndex
- javascript - 通过检查 Class .active 来增加进度条的宽度
- python - python 3中的Json获取元素
- tcp - 为什么 TCP-BSD 服务器即使收到数据也会卡在 read() 中?
- typescript - 当测试明显失败时,vscode-jest 插件显示成功
- python - 如何计算嵌套列表或元组中的重叠值以打印出 =
- mysql - MySQL 5.6 中的 any_type 是否有任何替代方案
- reactjs - 我们可以使用 key 来更新链接到具有相同 key 的另一个组件的组件吗