[英]php forward visitor ip to nginx
我試圖從PHP發送真正的訪客IP到nginx
這就是情況
服務器A - exmaple.com/a.php
服務器B - example / file.txt
當訪問exmaple.com/a.php時,它下載位於服務器b上的file.txt
但是nginx日志顯示服務器A ip作為請求下載,我想正確的原因是通過位於服務器A上的a.php下載的file.txt
那么如何將訪問者的ip而不是服務器的ip發送到nginx
我已經在我的nginx配置中有這個
proxy_set_header X-Real-IP $remote_addr;
謝謝
服務器A:將帶有客戶端IP的X-Real-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;
(因為默認值不需要)
您需要將其添加到您的請求標頭中。
$opts['http']['header'] = 'X-Real-IP: ' . $_SERVER['REMOTE_ADDR'] . "\r\n";
您還需要使用set_real_ip_from
配置指令配置Nginx以接受此操作。
更好的選擇是使用cURL(參見@ Terra的答案),它比fopen包裝器提供更多的靈活性。
然而, 最好的選擇只是讓Nginx這樣做。 它比通過PHP管理所有這些數據更有效。 使用proxy_pass
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.