我在Heroku上成功运行了一个节点应用程序。我已经购买了加急SSL证书,一切正常。我去https...并获得一个完整的“绿色条”,证明该站点是通过https提供服务的
但是,非 SSL 标准 http 仍然可用。如何强制应用通过 https 提供服务?谢谢
我只是使用了Cloudflare的“始终使用HTTPS”功能。只需遵循以下步骤:
1.如果您还没有注册Cloudflare,请注册
2.添加您的站点example.com
3. 选择一个计划。(免费计划就足够了)
4.查看您的DNS记录。例如,如果您在name price上已经有一些条目,Cloudflare会尝试自动检测这些记录。重要的是,您至少留下带有< code>IPv4地址和< code>CNAME类型的A类记录,其中< code >内容是应用程序Heroku设置中域名的< code>DNS目标。另见截图
5.您需要指向Cloudflare的名称服务器才能成功激活您的站点,否则Cloudflare将无法管理您的DNS并优化您的站点。删除现有的名称服务器,然后将它们替换为Cloudflare的名称服务器。它们还会在页面上向您显示说明(可能需要长达48小时才能激活您的站点,但根据我的经验,只需15分钟)。请参阅Namecheap的屏幕截图作为示例:
6.转到SSL/TLS
部分并在边缘证书
部分下启用“始终使用HTTPS”-功能。现在所有使用“超文本传输协议”方案的请求都应该重定向到“https”
好处1:如果用户只输入example,也可以在没有scheme或www的情况下转发请求。com
或www.example。com
只需创建一个页面规则,将这些请求转发到您的安全url。为此,请转到“页面规则”部分并点击“创建页面规则”按钮。输入应匹配的url,并添加状态代码为“设置转发url”的“永久重定向”。还可以按如下方式输入目标url,并在末尾添加$1
以使其正常工作。点击“保存并部署”,您就可以开始了。有关更多详细信息,请查看此处的“高级转发选项”部分(请记住,您可能需要清除缓存才能看到更改)。请参见屏幕截图:
奖励2:您购买了另一个域,只想将其重定向到您的安全主域。例如,您购买了fiveexample。com
和5示例。com
,您想要重定向5example。com始终
https://www.fiveexample.com无论用户输入什么样的5示例。com
例如www.5example。com
,http://5example.com
甚至https://www.5example.com
即使第二个域没有ssl。Cloudflares页面规则也是一种解决方案。只需为第二个域执行步骤1-5(但在步骤4中,您不需要heroku dns目标)。按照步骤支持所有转发后,为第二个域添加这三个页面规则。同样适用于。app
域(请记住,您可能需要清除缓存才能看到更改)。查看屏幕截图
还有NPM模块heroku-ssl-redirect帮你处理
在 Heroku 上,确定请求通过 http 传入的事实有点棘手。https 在赫鲁库路由层进行处理,并将请求传递到 http 上的节点应用。
这篇文章让我摆脱了困境http://jaketrent.com/post/https-redirect-node-heroku/
我看到这篇文章给出了使用WebClient将文件上传到ftp的简单想法。这很简单,但如何强制它使用SSL?
问题内容: 我正在运行没有代理并且使用SSL的node.js express 3服务器。 我试图弄清楚如何强制所有连接通过https。 Google搜索向我显示了这一点: https://groups.google.com/forum/#!topic/express- js/Bm6yozgoDSY 当前没有办法强制执行https重定向,尽管这似乎有点奇怪。我们有一个仅使用https的应用程序,并且
我试图使用参考文档强制SSL https://docs.spring.io/spring-boot/docs/current/reference/html/howto-security.html#howto-启用https 不过我已经有了 当我添加,甚至没有时,然后对非OAuth2页面的请求会无缘无故地重定向到。它与属性设置一起工作。只需通过扩展类就会破坏应用程序。OAuth2还保护了其他不相关的
问题内容: 如何使用PHP中特定的.htaccess和mod_rewrite页面强制使用SSL / https。 问题答案: 对于Apache,您可以使用强制SSL : 除非为当前连接启用了SSL上的HTTP(即HTTPS),否则该指令禁止访问。这在启用SSL的虚拟主机或目录中非常方便,可防止配置错误暴露应受保护的内容。使用此指令时,将拒绝所有未使用SSL的请求。 不过,这不会重定向到https。
问题内容: 我已经配置了SSL enpoint,并且可以确认它正在工作。当我进入日志时,会看到以下内容: 我试图追踪有关退出代码143的一些信息,以及为什么所有进程都被停止。签出以下服务器文件: 感谢您的提前反馈。如果需要,我可以提供更多详细信息。 ------解决方案(编辑)------- 请参阅下面的答案。 问题答案: 我在这里找到了答案:ExpressJS节点HTTPS服务器上的Heroku
问题内容: 我有一个应用程序在heroku上运行,并在带有https的节点上运行express。如何确定协议,以在Heroku上使用nodejs强制重定向到https? 我的应用程序只是一个简单的http服务器,它(尚未)意识到heroku正在向其发送https请求: 问题答案: 答案是使用Heroku传递给它的代理thingamabob时使用的“ x-forwarded-proto”标头。(旁注