【问题标题】:apache proxy - Pass origin IP address to destinationapache 代理 - 将源 IP 地址传递到目标
【发布时间】:2018-10-22 19:54:29
【问题描述】:

我使用 apache 作为代理服务器来接受一个端口上的传入请求,并将它们重定向到另一个帖子上的目标(基于传入端口),作为 VirtualHost 条目的示例:

<VirtualHost *:444>
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ProxyPreserveHost On
        ProxyRequests Off
        ServerName mydomain.com
        ServerAlias mydomain.com
        ProxyPass / http://destination_IP:6444/
        ProxyPassReverse / http://destination_IP:6444/
        SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

我的问题是,当请求到达目标服务器时,它显示的是我的公共 IP 地址(apache 代理服务器的 IP 地址),而不是原始客户端 IP 地址。

我尝试使用a2enmod remoteip 启用mod_remoteip,并将以下内容添加到 apache2.conf 文件中:

LoadModule remoteip_module modules/mod_remoteip.so

但我没有将客户端 IP 地址转发到目标服务器,它仍然显示为我自己的(代理服务器公共 IP 地址)。

我无法修改目标服务器上的任何内容,因此我需要在自己的代理服务器上进行解析。

在这种情况下如何传递客户端 IP 地址?

谢谢。

【问题讨论】:

    标签: apache proxy


    【解决方案1】:

    您不能将您的远程 IP 地址更改/伪造为客户端 IP 地址。与目标服务器的连接将始终来自您的代理服务器,因此来自代理服务器 ip。 您的代理可以将 x-fordwared-for 标头中来自客户端的原始 ip 传递给目标。处理与否取决于目标。

    mod_remoteip 模块可用于告诉目标端的 apache 不要从默认标头加载 ip 地址,而是从 x-fordwared-for 标头加载 IP 地址(如果您启用此功能)。

    另见https://stackoverflow.com/a/30784225/1216595

    【讨论】:

    • 谢谢,我已经阅读了那篇文章,并猜测可能是这种情况。那么需要在目标服务器上执行 x-forwarded-for 配置以“获取”原始客户端 IP 地址吗?这是正确的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 2012-02-05
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多