我目前正在为 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
设置应包含服务器的外部地址,因为这是提供代理信息的地址。