php 转发访客ip到nginx
php forward visitor ip to nginx
我正在尝试从 php
将真实访客 ip 发送到 nginx
情况是这样
服务器 A - 例如。com/a.php
服务器 B - example/file.txt
当访问 exmaple.com/a.php 它下载 file.txt 位于服务器 b
但是 nginx 日志显示服务器 A 的 ip 作为请求的下载,我猜这是正确的原因 file.txt 通过位于服务器 A
上的 a.php 下载
那么如何将访问者的 ip 而不是服务器的 ip 发送到 nginx
我的 nginx 配置中已经有了这个
proxy_set_header X-Real-IP $remote_addr;
谢谢你
Server A: 添加 X-Real-IP
header 和客户端的 IP 到传出请求。这部分取决于你的代码。比如CURL的话,需要加上curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'X-Real-IP: '.$_SERVER['REMOTE_ADDR'] ])
.
服务器B:需要配置nginx。添加到 nginx 的 server
配置块:
set_real_ip_from SERVER_A_IP;
real_ip_header X-Real-IP;
(不需要,因为默认值)
您需要将其添加到您的请求中 headers。
$opts['http']['header'] = 'X-Real-IP: ' . $_SERVER['REMOTE_ADDR'] . "\r\n";
您还需要使用 set_real_ip_from
配置指令配置 Nginx 以接受它。
更好的选择是使用 cURL(请参阅@Terra 的回答),它比 fopen 包装器更灵活。
best 选项只是让 Nginx 这样做。它比通过 PHP 传输所有这些数据要有效得多。使用 proxy_pass
.
我正在尝试从 php
将真实访客 ip 发送到 nginx情况是这样
服务器 A - 例如。com/a.php
服务器 B - example/file.txt
当访问 exmaple.com/a.php 它下载 file.txt 位于服务器 b
但是 nginx 日志显示服务器 A 的 ip 作为请求的下载,我猜这是正确的原因 file.txt 通过位于服务器 A
上的 a.php 下载那么如何将访问者的 ip 而不是服务器的 ip 发送到 nginx
我的 nginx 配置中已经有了这个
proxy_set_header X-Real-IP $remote_addr;
谢谢你
Server A: 添加 X-Real-IP
header 和客户端的 IP 到传出请求。这部分取决于你的代码。比如CURL的话,需要加上curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'X-Real-IP: '.$_SERVER['REMOTE_ADDR'] ])
.
服务器B:需要配置nginx。添加到 nginx 的 server
配置块:
set_real_ip_from SERVER_A_IP;
real_ip_header X-Real-IP;
(不需要,因为默认值)
您需要将其添加到您的请求中 headers。
$opts['http']['header'] = 'X-Real-IP: ' . $_SERVER['REMOTE_ADDR'] . "\r\n";
您还需要使用 set_real_ip_from
配置指令配置 Nginx 以接受它。
更好的选择是使用 cURL(请参阅@Terra 的回答),它比 fopen 包装器更灵活。
best 选项只是让 Nginx 这样做。它比通过 PHP 传输所有这些数据要有效得多。使用 proxy_pass
.