相关疑难解决方法(0)

在apache中将REMOTE_ADDR设置为X-Forwarded-For

在Apache坐在反向代理(例如Squid)后面的情况下,cgi环境变量REMOTE_ADDR获取代理的地址而不是客户端.

但是,代理将设置一个名为X-Forwarded-For包含客户端原始IP地址的标头,以便Apache可以看到它.

问题是,我们如何让Apache替换标头中REMOTE_ADDR的值,X-Forwarded-For以便所有Web应用程序都能透明地看到正确的地址?

apache cgi http

13
推荐指数
3
解决办法
5万
查看次数

来自用户的REMOTE_ADDR IP,而不是来自Nginx反向代理服务器的IP

我已经阅读了很多有关此主题的文章,并尝试了几种解决方案,但没有找到有效的散热片。

我在Apache服务器之前设置了Nginx反向代理。当我的PHP应用程序使用REMOTE_ADDR函数时,它将获得Nginx服务器的IP,而不是用户。

我正在使用Apache 2.4.10,因此应安装module_remoteip.c。但是它没有被加载。

因此,我安装了rpaf_module。看来此模块已正确安装,并且phpinfo()mod_rpaf-2与加载的模块一起显示。我用以下内容修改了/etc/apache2/mods-available/rpaf.conf文件:

<IfModule rpaf_module>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 172.19.0.5 # ip of Nginx server
    RPAFheader X-Forwarded-For
</IfModule>
Run Code Online (Sandbox Code Playgroud)

我的Nginx配置如下所示:

location / {
    proxy_set_header X-Real-Ip $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass 172.19.0.4;
}
Run Code Online (Sandbox Code Playgroud)

感谢帮助?

php apache proxy nginx

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

apache ×2

cgi ×1

http ×1

nginx ×1

php ×1

proxy ×1