linux — php переслать посетителю ip в nginx

я пытаюсь отправить реальный ip посетителя на nginx от php

это ситуация

сервер A — exmaple.com/a.php

сервер B — пример / file.txt

при доступе к exmaple.com/a.php он загружает файл file.txt, расположенный на сервере b

но журналы nginx показывают, что сервер A ip запрашивает загрузку, я думаю, это правильно, потому что файл file.txt, загруженный через файл a.php, расположенный на сервере A

так как я могу отправить IP-адрес посетителя вместо сервера на Nginx

у меня уже есть это в моем конфиге nginx

        proxy_set_header X-Real-IP $remote_addr;

благодарю вас

1

Решение

Вам необходимо добавить его в заголовки вашего запроса.

$opts['http']['header'] = 'X-Real-IP: ' . $_SERVER['REMOTE_ADDR'] . "\r\n";

Вам также необходимо настроить Nginx для принятия этого, с set_real_ip_from директивы конфигурации.

Лучшим вариантом было бы использовать cURL (см. Ответ @ Terra), что дает вам немного больше гибкости, чем обертки fopen.

Лучший Однако, вариант просто позволить Nginx сделать это. Это гораздо эффективнее, чем передавать все эти данные через PHP. использование proxy_pass,

1

Другие решения

Сервер A: добавить X-Real-IP заголовок с 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; (не требуется, поскольку значение по умолчанию)

2

По вопросам рекламы [email protected]