我有多个远程系统需要确定它们的公共 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