当前位置: 首页 > 知识库问答 >
问题:

在Heroku Laravel实例上设置HTTPS重定向

朱保赫
2023-03-14

我有一个在ApacheHeroku实例上运行的Laravel5构建,我试图确保所有流量都通过https转换,但是我非常迷路。

我有SSL证书,并成功运行。但是使用Heroku,您不能直接编辑服务器上的. htaccess文件。所以他们在这个页面上的建议是建立一个apache_app.conf,并告诉Heroku通过把这个放在Procfile中来阅读它:

web: vendor/bin/heroku-php-apache2 -C apache_app.conf public/

然而,当我这样做时,我添加的几乎任何类型的HTTPS重写规则都会导致重定向循环或应用程序错误。以下是我当前的配置:

RewriteEngine on

#Normal way (in case you need to deploy to NON-heroku)
RewriteCond %{HTTPS} !=on

#Heroku way
RewriteCond %{HTTP:X-Forwarded-Proto} !https

#If neither above conditions are met, redirect to https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

共有2个答案

龙玄天
2023-03-14

根据Heroku文档,您必须修改“TrustProxies”中间件,使$proxies设置为“*”

class TrustProxies extends Middleware
{
    protected $proxies = '*';
// ...

https://devcenter.heroku.com/articles/getting-started-with-laravel#trusting-负载平衡器

焦博实
2023-03-14

我没有通过.htaccess处理重定向,而是通过这个方法来完成

HttpsProtocol中间件将每个web路由重定向到HTTPS协议

 类似资料:
  • 我到处都读过,要设置Https来访问kubernetes集群,您需要有入口,而不仅仅是一个负载平衡器服务,它还将集群暴露在外部。 我的问题是非常理论化的:如果入口(确实是)由负载平衡器服务、控制器(例如nginx映像的部署/pod)和一组规则(为了正确代理集群内的传入请求)组成,为什么我们不能在负载平衡器前设置Https而不是入口? 作为练习的标题,我自己分别构建了这三个组件(一个负载平衡器、一个

  • 根据Tomcat文档,我运行以下命令来生成SSL密钥存储。 我得到以下几点:

  • 我有一个使用http和https的SpringBoot 2.0应用程序。因此,在端口9080上,它服务于http协议,在端口9443上,它工作正常。我唯一想要的是重定向,如果用户输入例如:http://localhost:9443/e1 综上所述: http://localhost:9080/e1 https://localhost:9443/e1 http://localhost:9443/e1

  • 如果其当前使用 HTTP 访问,则将页面重定向到 HTTPS 中。 另外,按下后退按钮不会将其退回到历史记录中的HTTP页面。 使用 location.protocol 获取当前正在使用的协议。 如果不是 HTTPS ,使用 location.replace() 将现有页面替换为 HTTPS 版本。 使用 location.href 获取完整的地址,用 String.split() 拆分完整的地址

  • 不是我的安全泪珠是这样的: 我现在导入证书: 然后我重新启动KeyCloak: 编辑: 这是我记录的错误: ])-故障说明:{“WFLYCTL0080:失败的服务“=>{”org.wildfly.core.management.security.realm.undertowrealm.key-manager“=>”WFlyDM0018:无法启动服务,原因是:UnrecoverableKeyExce

  • 问题内容: 为了使用要集成到我的应用程序中的模块(我正在本地开发),我必须做两件事: 1)使我的应用程序在HTTPS上本地运行。 2)运行具有特定域的应用程序。 使用我用于本地开发的Webpack开发服务器,这两件事都应该很容易,但是由于某些原因,它不能正常工作,如文档所示。 我的档案是: 我指向的路径已添加到计算机上的主机文件中,因此它应与localhost默认值一样有效。 我的文件具有以下内容