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

使用Apache Docker实现AWS应用型负载均衡SSL终止

皇甫喜
2023-03-14

我正在使用AWS应用程序负载平衡器来设置我的环境。

应用程序负载平衡器在端口443接收来自Internet的请求,并将其转发到端口80
Apache服务器在EC2服务器上运行,docker位于负载平衡器后面的端口80上<我的网站是用CakePHP开发的<我打电话的时候https://www.example.com,我的网页已加载
然而,在PHP中,当我使用以下代码获取当前url时,得到的url是http://www.example.com.我没有得到https。我只得到http。

echo Router::url('/', true);

因此,当应用程序发出ajax调用时,请求是通过http(而不是https)发出的,浏览器会以“阻止:混合内容”为由拒绝该请求。我认为请求应该以https的形式发出。请指出我遗漏了什么。

我尝试了以下方法,但没有任何效果

在主机文件中。(或)我把它放在. htaccess中

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}

共有1个答案

宗政霄
2023-03-14

我找到了解决办法。诀窍是将$\u服务器['HTTPS']变量设置为“on”。在apache中,打开“setenif”模块。然后在“/etc/apache2/apache2.conf”中输入以下设置

# for port forwarding
RemoteIPHeader X-Forwarded-For

# set Environment Variable
SetEnvIf x-forwarded-proto https HTTPS=on

然后,检查“phpinfo()”以确保$\u服务器['HTTPS']处于“打开”状态。

 类似资料:
  • 我有一个java应用程序在两个ec2实例中运行,客户可以使用AWS应用程序负载均衡器访问它们。现在ALB可以作为SSL终止点工作。所有请求都通过端口443上的ALB。工作正常。问题是java应用程序有时需要重定向到不同的路径。由于java应用程序不知道它在SSL ALB后面运行,因此重定向路径包括超文本传输协议://而不是https:// 有什么方法可以在我的应用程序之外将协议修改为https?

  • 我在将https添加到我的EC2实例时遇到了一个问题,也许你们可以找到让它工作的答案。 我有一个负载平衡器,它正在将连接转发到我的EC2实例,我已将SSL证书添加到负载平衡器,一切正常,我已将侦听器添加到端口443,该端口将转发到我的实例的端口443,我已将Apache配置为在端口443和80上侦听,现在这里是我的负载平衡器的屏幕截图: SSL证书有效,在端口80(HTTP)上一切正常,但如果我尝

  • 是否需要检查在EKS中创建的入口资源和由AWS负载均衡器控制器创建的应用程序负载均衡器之间的映射? 我的理解是AWS LBC为类“alb”的入口创建了ALB。删除入口资源后,应该删除此ALB。 但这种情况有时不会发生。可能是因为我搞乱了其他相关资源,比如statefulset、service或pod。(或者可能是由于重复部署而没有首先删除?) 那么,有没有办法在AWS中查看入口和相应ALB之间的链

  • 我在AWS ElasticBeanstek上运行laravel应用程序,我使用应用型负载均衡。 当我运行这段代码时,不会显示我的ip,它会显示负载平衡器的ip地址。 那些在cloudflare上使用相同问题的人也有过cloudflare的经验,并且有cloudflare的解决方案,但我找不到AWS应用程序负载平衡器的解决方案。 我在获取用户的ip地址和在维护模式下添加-允许ip时遇到问题。 当我运

  • 我们有一个在ec2实例上运行的web应用程序。我们添加了AWS ELB,以将所有请求路由到负载平衡器的应用程序。SSL证书已应用于ELB。 我担心ELB和ec2实例之间的HTTP通信是否安全?或者我应该在ELB和ec2实例之间使用HTTPS通信吗? AWS是否保证ELB和ec2实例之间HTTP通信的安全性?

  • 问题内容: 我们正在使用Redis从AWS ELB后面的Web应用程序(基于pub / sub)收集事件。我们正在寻找一种解决方案,以允许我们针对不同的服务器进行扩展并实现高可用性。我们不希望将这两个服务器放在Redis集群中,我们的计划是使用cloudwatch监视它们,并在必要时在它们之间切换。 我们尝试了一个简单的测试,即在ELB后面放置两个Redis服务器,对ELB DNS进行远程登录,然