【问题标题】:How can I pass environment variables to Apache via nginx proxypass?如何通过 nginx proxypass 将环境变量传递给 Apache?
【发布时间】:2012-03-23 15:23:55
【问题描述】:

这是我用来做proxy_pass的:

location ~* \.php$ {
   proxy_pass http://127.0.0.1:8080;
}

在此之后 $_SERVER['REMOTE_ADDR'] 在 php 中不再可用。在 nginx 将请求传递给 Apache 后,我需要做什么才能使这些 $_SERVER 变量在 php 中可用?

【问题讨论】:

    标签: nginx


    【解决方案1】:

    您需要在 Apache 和 Nginx 中安装 mod_rpaf,添加以下内容:

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    

    【讨论】:

    • 我应该发送其他标题吗?像其他 $_SERVER 变量一样?这是在文档中的什么地方,你能指点我的资源吗?
    • 我认为您不会在 Nginx 文档中找到“这就是您应该如何代理 Apache”的参考。但是,通过了解两个 wedserver 的工作原理,您将看到需要 mod_rpaf 处于活动状态,并且远程 ip 需要由 nginx 如所述地传递,才能正确地将这些特定项目传递给 Apache。阅读 mod_rpaf。至于其余的 $_SERVER 变量,没有什么特别需要做的。实际上,您的意思是您的 $_SERVER 变量已完全消失,而不是远程 ip 传输不正确?
    • 我刚刚检查了一下,看起来所有变量实际上都在传递/可用。我猜 mor_rpaf 已经在运行了。我想我遇到的问题是因为我正在转发,REMOTE_ADDR 是 127.0.0.1。有没有办法可以用 HTTP_X_FORWARDED_FOR “覆盖”这个值?
    • 是的,有...安装 mod_rpaf 并按照说明传递标头。
    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2011-01-30
    • 2020-03-05
    • 2021-11-27
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多