_SERVER["REMOTE_ADDR"] 中显示服务器 IP 地址。这样可以吗?

_SERVER["REMOTE_ADDR"] 中显示服务器 IP 地址。这样可以吗?

我目前正在为 digital ocean 中的 apache2 设置 nginx 代理。我并不是真正的管理员,但我遵循了本教程https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-web-server-and-reverse-proxy-for-apache-on-one-ubuntu-14-04-droplet他说“REMOTE_ADDR 变量现在也将是你本地计算机的公共 IP 地址”,

这是我的rpaf.conf

<IfModule mod_rpaf.c> RPAF_Enable On RPAF_Header X-Real-Ip RPAF_ProxyIPs 127.0.0.1 10.0.0.0/24 RPAF_SetHostName On RPAF_SetHTTPS On RPAF_SetPort On </IfModule>

但是,REMOTE_ADDR 上显示的是服务器 IP 地址。这样可以吗?

答案1

您需要将服务器的地址添加到RPAF_ProxyIPs

您链接的页面包含一个示例配置,它将每个请求重定向到服务器的外部 IP 地址。我说的是这个:

server {
  listen 80;
  server_name foobar.net www.foobar.net test.io www.test.io;

  location / {
    proxy_pass http://111.111.111.111:8080;
    proxy_set_header Host $host;
    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;
  }
}

此处,111.111.111.111地址应为服务器的真实 IP 地址。如果您将其更改为服务器的地址,Apache 将看到连接源自服务器的外部接口(并指向同一个接口)。为此,RPAF 的ProxyIPs设置应包含服务器的外部地址,因为这是提供代理信息的地址。

相关内容