@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.