@jeromy_ruecker
Для замены $_SERVER['REMOTE_ADDR'] на IP-адрес клиента в PHP на двух серверах Nginx, можно использовать следующий подход:
1 2 3 4 5 6 |
http {
...
set_real_ip_from 127.0.0.1; # IP-адрес второго сервера Nginx
real_ip_header X-Forwarded-For;
...
}
|
1
|
sudo systemctl reload nginx |
1 2 3 4 5 6 7 8 9 |
server {
...
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
}
...
}
|
1
|
sudo systemctl reload nginx |
Пожалуйста, обратитесь к документации Nginx для получения более подробной информации о настройке прокси-сервера и настройке передачи IP-адреса клиента.
@jeromy_ruecker
Помимо этого метода, можно также использовать другой способ для получения IP-адреса клиента в PHP. Вместо использования $_SERVER['REMOTE_ADDR'], можно обратиться к заголовку X-Forwarded-For, который содержит IP-адрес клиента, переданный через прокси-серверы.
Пример кода для замены $_SERVER['REMOTE_ADDR'] на IP-адрес клиента через заголовок X-Forwarded-For:
1 2 3 4 5 6 7 |
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$client_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$client_ip = $_SERVER['REMOTE_ADDR'];
}
echo $client_ip;
|
Этот код сначала проверяет наличие заголовка X-Forwarded-For в запросе. Если заголовок присутствует, то значение IP-адреса клиента присваивается переменной $client_ip. В противном случае используется $_SERVER['REMOTE_ADDR'].
Таким образом, данный метод позволяет получить IP-адрес клиента, переданный через прокси, даже если конфигурация Nginx не включает изменения IP-адреса для PHP.