Apache ProxyPass无法将原始的HTTP标头转发给工作人员

时间:2018-08-12 04:38:35

标签: proxypass

我正在使用名为setHeader的httpd发送请求。

如果我不使用ModProxy,请使用标头名称为getRequestHeader的标头。

但是我需要ProxyPass工作器中的标头信息。

如何让Apache转发ProxyPass中的标头。

我已经为此寻找答案了很长时间,但找不到有效的方法。

我的ProxyPass指令:

<IfModule mod_proxy_fcgi.c>
    #No PATH_INFO with mod_proxy_fcgi unless this is set
    SetEnvIf Request_URI . proxy-fcgi-pathinfo=1

    ProxyPass "/gas30/" "fcgi://192.168.1.5:6394/"
    Alias "/gas30" "/opt/fourjs30/gst/gas/bin/fastcgidispatch enablereuse=on"

    ProxyPass "/gas31/" "fcgi://192.168.1.5:6395/"
    Alias "/gas31" "/opt/fourjs31/gst/gas/bin/fastcgidispatch enablereuse=on"

</IfModule>

我正在使用Apache / 2.4.6(CentOS 7)

预先感谢

Johan

我使用tcpdump显示在侦听端口6380上收到的标头 只是要确保它在那里。

http_auth:Y2FuY3VuQG1ic2JiYW5rLmNvbScgJzExMTExMTExJyAnJDJhJDEyJDJwMlFOMVNZVURldUlpcWw2R3ZWMk83Mi45QUtXSlROcUlnWDRFQVUvZnJ>

那是正确的标题。

我已经尝试了很多方法将其转发到6395端口。 不过,我完全陷入困境。 我尝试的最后一件事是在“位置”下对其进行硬编码。 但我在tcpdump中看不到

<Location /gas31>
  Header add http_auth "Y2FuY3VuQG1ic2JiYW5rLmNvbScgJzExMTExMTExJyAnJDJhJDEyJDJwMlFOMVNZVURldUlpcWw2R3ZWMk83Mi45QUtXSlROcUlnWDRFQVUvZnJjU01SZnJNQXVL"
  RequestHeader set http_auth "Y2FuY3VuQG1ic2JiYW5rLmNvbScgJzExMTExMTExJyAnJDJhJDEyJDJwMlFOMVNZVURldUlpcWw2R3ZWMk83Mi45QUtXSlROcUlnWDRFQVUvZnJjU01SZnJNQXVL"
  Order Deny,Allow
  Deny from all
  Allow from all
</Location>

我已经到了这一行的结尾,我尝试了所有操作,但无法获取请求标头。 。 我可以将标头放在我发送的JSON消息中,也可以移到nginx。

自从我使用httpd多年以来,我将采用第一种选择。


我看到了这篇文章,但由于声誉而无法添加评论。

这相关吗?

如果在这些地方我应该放置这些说明?


这行似乎保留了Header,原因是我不太了解:

SetEnvIf HTTP_MY_HEADER“(。*)” MY_HEADER = $ 0 我不明白的原因是,我在这里设置了一个Env变量,而不是标题-Env变量会自动变成标题吗?

虽然我可能也必须这样做,但是这是不必要的:

RequestHeader设置HTTP_MY_HEADER“ $ {MY_HEADER} e” 我想这是“有效”的答案,尽管我很想知道为什么...

0 个答案:

没有答案