Apache httpd返回远程地址的简单方法

Apache httpd返回远程地址的简单方法

我有多个远程系统需要确定它们的公共 IP,并且我想使用运行 httpd 2.2 的面向互联网的服务器将它们的远程地址返回给它们。

如果 httpd 服务器运行的是 PHP 或类似程序,这将是微不足道的,但如果可以配置 httpd 及其模块来获取此信息,我希望避免需要额外的服务器端处理。

有没有办法配置 httpd 以返回远程地址?也许有一个特殊的 URL 以某种方式被重写?如果重要的话,远程系统正在运行 linux,并且可能会使用 wget 来打印来自标题的信息。

答案1

有趣的问题。我认为如果不使用服务器端脚本语言,Apache 就无法对文档内容进行任何操作,但您应该能够修改 HTTP 标头以包含所需的数据。

一个例子:

<VirtualHost *:80>
  ServerName get-remote-host.int.mtak.nl

  SetEnvIf Remote_Host "(.*)" var1=$1
  Header set X-RemoteHost %{var1}e
</VirtualHost>

这会在响应 HTTP 标头中添加一个额外的标头。如果您获取此请求的标头,则curl -I get-remote-host.int.mtak.nl可以获取客户端的 IP:

mtak@frisbee:~$ curl -I get-remote-host.int.mtak.nl
HTTP/1.1 200 OK
[...]
X-RemoteHost: 10.100.1.2
Content-Type: text/html

相关内容