Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何在Nginx反向代理的CakePHP中检测SSL?

如何在Nginx反向代理的CakePHP中检测SSL?

作者头像
习惯说一说
修改于 2019-08-02 02:01:47
修改于 2019-08-02 02:01:47
1.2K0
举报

我使用nginx作为负载平衡器,后面是Apache应用服务器。由于SSL连接在负载平衡器处终止,因此$ b b $ b $ _ SERVER ['HTTPS'] $ b

  找到一个安全的方式来检测应用服务器上的HTTPS。

到目前为止,我把它放到我的CakePHP配置中:

  $ request_headers = getallheaders();

  if((isset($ _ SERVER ['HTTPS'])&& $ _SERVER ['HTTPS'])||(isset($ request_headers ['X-Forwarded-Proto'])&& $ request_headers ['X-Forwarded-Proto'] =='https')){$ ssl = true;

  //覆盖环境vars(ugly),因为CakePHP不会支持X-Forwarded-Proto$ _SERVER ['HTTPS'] ='on';

  $ _ENV ['HTTPS'] ='on';

  } else {

  $ ssl = false;

  }

  然后在nginx配置中,我使用了 proxy_set_header X-Forwarded-Proto https; 将标记添加到负载均衡器和后端应用程序服务器之间的任何请求。

  这完全正常,但任何人直接请求应用程序服务器可能会欺骗他们认为他们正在浏览SSL,当他们不是。我不知道这是否是一个安全风险,但它似乎不是一个好主意。

  这是一个安全风险吗?

  因为使用 X-Forwarded-Proto 看起来像标准的标准,解决方案可能是一个很好的补丁提交给CakePHP核心,所以我认为任何答案都可以合法地涉及编辑核心文件。

解决方案:

  mod_rpaf 会让你这样做。

  这会设定Apache的HTTPS值到“on”基于nginx发送的头,所以Cake将开箱即用(以及Apache中运行的任何其他应用程序)。

  它还会更正REMOTE_ADDR,SERVER_PORT和HTTP_HOST的值。

  这是我的示例config:

  < IfModule mod_rpaf.c>

  RPAF_Enable On

  RPAF_ProxyIPs 127.0.0.1 10.0.0.0/24

  RPAF_SetHostName On

  RPAF_SetHTTPS On

  RPAF_SetPort On

  < / IfModule>

  #如果mod_rewrite重定向,那么我们失去HTTPS状态为REDIRECT_HTTPS。

  #这将重置它。这发生在Cake的前台控制器

  < IfModule setenvif_module>

  SetEnvIf REDIRECT_HTTPS on HTTPS = on

  < / IfModule>

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Centos6.8下编译安装LAMP的操作记录梳理
之前用的最多的web框架是LNMP,偶尔也会用到LAMP。接下来简单说下LAMP环境的部署记录,这里选择源码安装的方式: 1)Mysql的安装 部署过程参考:http://www.cnblogs.com/kevingrace/p/6109679.html 2)Apache的安装 依赖软件安装 [root@jenkins-server ~]# yum install gcc gcc-c++ make wget [root@jenkins-server ~]# yum install zlib-devel op
洗尽了浮华
2018/01/23
1.1K0
Centos6.8下编译安装LAMP的操作记录梳理
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
yuanfan2012
2023/02/23
2.9K0
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
nextcloud-onlyoffice-反向代理https错误排查
本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/reverse_proxy_https_debug/
羽翰尘
2019/11/20
3.5K0
Nginx前端,apache后端获取真实IP
http://www.stderr.net/apache/rpaf/download/ 需要使用apxs命令(这个命令在httpd-devel,可以使用yum install httpd-devel) 1、执行apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c 2、 编辑vi /etc/httpd/conf/httpd.conf 添加如下代码 LoadModule rpaf_module modules/mod_rpaf-2.0.so <IfModule mod
苦咖啡
2018/05/08
1.1K0
Nginx反向代理+负载均衡简单实现(https方式)
背景: A服务器(192.168.1.8)作为nginx代理服务器 B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服务器上反向代理到B服务器上 这就涉及到nginx反向代理https请求的配置了~~~ ------------------------------------------------------------------------------------ A服务器(192.168.1.8)上的操作流程: 1
洗尽了浮华
2018/01/22
2.9K0
Nginx+SSL+Tomcat配置SSL证书(Nginx+SSL做前端,后端使用tomcat)
下面解决方案是浏览器和 Nginx 之间使用 HTTPS 通讯,而 Nginx 到 Tomcat 通过 proxy_pass 使用标准 HTTP 连接。
BUG弄潮儿
2022/06/30
1.9K0
Nginx+SSL+Tomcat配置SSL证书(Nginx+SSL做前端,后端使用tomcat)
nginx反向代理后应用程序如何获取客户端真实IP?
Nginx反向代理后,Servlet应用通过request.getRemoteAddr()取到的IP是Nginx的IP地址,并非客户端真实IP,通过request.getRequestURL()获取的域名、协议、端口都是Nginx访问Web应用时的域名、协议、端口,而非客户端浏览器地址栏上的真实域名、协议、端口。
拓荒者
2019/03/15
2.6K0
如何在一个Ubuntu 18.04服务器上将Nginx配置为Web服务器和Apache的反向代理
Apache和Nginx是目前比较流行的两种常用于PHP的开源Web服务器。当托管具有不同要求的多个网站时,在同一虚拟机上运行它们会很有用。在单个系统上运行两个Web服务器的一般解决方案是使用多个IP地址或不同的端口号。
挺问中原
2018/09/25
4.8K0
nginx反向代理获取客户端的真实IP和域名
nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中。
用户7639835
2021/08/28
4.6K0
jenkins的nginx反向代理配置域名
假设 nginx 在目标服务器已经安装好了。没有安装好的,参考[《centos7 安装 jdk ,maven,tomcat,nginx》](https://www.yuque.com/docs/sha
leader755
2022/03/09
3.1K0
jenkins的nginx反向代理配置域名
Nginx https反向代理
这里还是使用前一篇文章中使用的python3的 http server 作为后端应用服务。
kongxx
2024/02/20
8690
Nginx反向代理Apache2多个端口
在涉及到使用Nginx代理多个Apache2项目时,不可避免需要Apache2使用不同的端口才能正常访问。
我不是程序员110
2022/10/28
1.1K0
Nginx从入门到放弃04-反向代理、正向代理、负载均衡
通过前面几篇的文章,我们知道nginx最主要的功能之一可以做负载均衡器、正向代理和反向代理,今天我们就来学习如何利用nginx配置
星哥玩云
2022/06/24
1.1K0
Nginx从入门到放弃04-反向代理、正向代理、负载均衡
如何在Ubuntu 14.04上使用Corosync,Pacemaker和浮动IP创建高可用性HAProxy设置
本教程将向您展示如何在Ubuntu 14.04上创建高可用性HAProxy负载均衡器设置,并支持浮动IP和Corosync / Pacemaker集群堆栈。HAProxy负载平衡器将分别配置为在两个后端应用程序服务器之间分割流量。如果主负载均衡器发生故障,则浮动IP将自动移至第二个负载均衡器,从而允许恢复服务。
何处惹尘埃
2018/09/25
2K0
使用NGINX作为前端代理和软件负载均衡器
NGINX Web服务器可以充当功能非常强大的软件负载平衡器,此外还有更传统的角色,通过HTTP使用FastCGI处理程序为脚本提供静态内容和动态内容。因为NGINX使用非线程,事件驱动的架构,所以它能够胜过像Apache这样的Web服务器。在接收重负载的部署中尤其如此。
Techeek
2018/09/13
1.6K0
使用NGINX作为前端代理和软件负载均衡器
【Nginx】Windows生成ssl证书、反向代理HTTPS
Select Additional Tasks页面勾选 The OpenSSL binaries (/bin) directory
后端码匠
2024/07/30
1990
【Nginx】Windows生成ssl证书、反向代理HTTPS
HTTPS环境下Nginx反向代理Tomcat的正确配置方法
如图,很多应用场景下,我们都会选择nginx作为tomcat的前端,进行后端服务器的负载均衡以及一些流量处理工作,同时,HTTPS的配置也一般放在Nginx上完成,而Nginx和后端服务器采用HTTP通信。
你的明明呐丶
2022/06/27
2.2K0
HTTPS环境下Nginx反向代理Tomcat的正确配置方法
10个顶级Linux开源反向代理服务器 - 解析与导航
反向代理服务器是一种部署在客户端和后端/源服务器之间的代理服务器,例如 NGINX、Apache 等 HTTP 服务器或用 Nodejs、Python、Java、Ruby 编写的应用程序服务器、PHP 和许多其他编程语言。
数据科学工厂
2023/11/28
3.5K0
10个顶级Linux开源反向代理服务器 - 解析与导航
反向代理 nginx 配置 原
[root@localhost conf]# cat nginx.conf #运行用户 user root; #启动进程,通常设置成和cpu的数量相等 worker_processes  8; #全局错误日志及PID文件 error_log  /home/logonuser/www/logs/error.nginx.log; pid        /var/run/nginx.pid; #工作模式及连接数上限 events {     #epoll是多路复用IO(I/O Multip
用户2836074
2018/08/15
4760
Nginx之反向代理
很多场景下,不得不承认Nginx是个好东西,它给我们的跨系统间的访问、安全性方面等等,带来了极大的便利,况且它的性能也极高。
xcbeyond
2020/04/01
8850
推荐阅读
相关推荐
Centos6.8下编译安装LAMP的操作记录梳理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档