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

Apache 2.4 PHP-FPM和授权头

文德曜
2023-03-14

摘要:Apache2.4的mod_代理似乎没有将授权头传递给PHP-FPM。有办法解决这个问题吗?

长版本:我正在运行一个带有Apache2.4和PHP-FPM的服务器。我将APC用于操作码缓存和用户缓存。根据互联网的建议,我使用Apache 2.4的mod_proxy_fcgi将请求代理给FPM,如下所示:

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/foo/bar/$1

设置工作正常,除了一件事:APC的捆绑APC。用于监视APC状态的php不允许我登录(查看用户缓存条目时需要)。当我点击“用户缓存条目”查看用户缓存时,它会要求我登录,点击登录按钮会显示通常的HTTP登录表单,但输入正确的登录名和密码不会成功。当使用mod_php而不是mod_proxy php fpm运行时,此函数工作正常。

通过谷歌搜索,我发现其他人也有同样的问题,并发现这是因为Apache没有将授权HTTP头传递给外部FastCgi进程。不幸的是,我只找到了mod_fastcgi的修复程序,如下所示:

FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization

是否有一个同等的设置或一些解决方法也适用于mod_proxy_fcgi?

共有3个答案

楚宏胜
2023-03-14

我在mod_proxy_fcgi中没有找到任何类似的设置,但默认情况下它只适合我。它要求用户授权(.htaccess照常),php获得授权,并与mod_php或fastcgi和pass header类似。我不知道我是否帮了忙。。。

编辑:它只适用于teszt.com/当使用DirectoryIndex...如果我通过php文件名(即使index.php!)它就是不起作用,不要把授权传递给php。这对我来说是一个拦截器,但是我不想降级到apache 2.2(和mod_fastgi),所以我迁移到nginx(在这台机器上也是如此)。

易雅畅
2023-03-14

这花了我很长时间来破解,因为它没有记录在mod_proxy或mod_proxy_fcgi下。

将以下指令添加到apache conf或。htaccess

CGIPassAuth on

详见此处。

顾俊楚
2023-03-14

各种Apache模块将剥离授权头,通常是出于“安全原因”。它们都有不同的模糊设置,你可以通过调整来推翻这种行为,但你需要确定到底是哪个模块造成的。

您可以通过env将标题直接传递给PHP来解决此问题:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

另请参见Zend Server Windows-授权标头未传递到PHP脚本

在某些情况下,即使这样也无法直接工作,您还必须更改PHP代码以访问$\u服务器['REDIRECT\u HTTP\u AUTHORIZATION'],而不是$\u服务器['HTTP\u AUTHORIZATION']。请参阅在Apache RewriteRule指令中设置环境变量时,是什么导致变量名的前缀为“REDIRECT_”?

 类似资料:
  • 问题内容: 简介: Apache 2.4的mod_proxy似乎没有将Authorization标头传递给PHP-FPM。有没有什么办法解决这一问题? 长版: 我正在使用Apache 2.4和PHP- FPM运行服务器。我正在将APC用于操作码缓存和用户缓存。根据Internet的建议,我使用Apache 2.4的mod_proxy_fcgi将请求代理到FPM,如下所示: 设置工作正常,除了以下几

  • 我想更好地理解隐式授权流和授权代码授权流之间的区别,因为我不确定我目前的理解是否正确。 隐式授权流主要由前端应用程序用于验证用户身份吗? 隐式授权流是否只需要一个client_id、用户名和密码来进行身份验证,换句话说,永远不会发送client_secret? 授权码只是一个短期令牌吗? 将授权码交换为访问令牌后,客户端可以访问用户帐户多长时间?具体地说,如果客户端是一个长时间运行的脚本,那么用户

  • 主要内容:1. 前提条件,2. 配置工作,3. 允许多人进入,4. 可能的问题,5. 替代密码存储,6. 使用多个供应者,7. 超越授权身份验证是验证访问者是否是他们所声称的人的任何过程。授权是允许访问者进入他们想去的地方或获得他们想要的信息的过程。 如果您的网站上的信息仅对一小部分人使用,下面这些技巧将帮助您确保看到这些网页的人员是您想要查看的人。 本文还将介绍保护大多数人将要使用的网站部分的“标准”方法。 1. 前提条件 本文中讨论的指令需要在主服务器配置文件(通常在部分中)或每目录配置文件

  • 我正在尝试使用基本授权让WSMan工作。我总是遇到访问被拒绝的错误。Kerberos身份验证工作正常。 Windows远程管理服务正在域A的Windows Server 2008 R2上运行,并具有以下配置: 我正在域B中的Windows 7工作站上执行Test-WSMan: 并得到以下错误: 请注意,以下命令可以正常工作: 以下日志在Windows Server上显示: 有人能帮我解决这个问题吗

  • 授权是指验证用户是否允许做某件事的过程。Yii提供两种授权方法: 存取控制过滤器(ACF)和基于角色的存取控制(RBAC)。 存取控制过滤器 存取控制过滤器(ACF)是一种通过 yii\filters\AccessControl 类来实现的简单授权方法, 非常适用于仅需要简单的存取控制的应用。正如其名称所指,ACF 是一种动作过滤器 filter,可在控制器或者模块中使用。当一个用户请求一个动作时

  • 可能是NAS不支持返回的AVP以限制带宽。 AVP的单位也可能不匹配。例如,计数器期望值为Kbit / s而不是bit / s。 为了提高速度,应使用Perl代替Bash。如果你使用perl模块,当FreeRADIUS启动时,Perl解释器和Perl脚本将被加载到内存中。 FreeRADIUS内部使用的其他属性应在字典文件中定义,该文件位于FreeRADIUS配置目录下。 内部属性列表称为控制列表