簡體   English   中英

php轉發訪客ip到nginx

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM