Как заменить $_server[remote_addr] на ip клиента в php за двумя nginx?

Пользователь

от jeromy_ruecker , в категории: Другие , 6 месяцев назад

Как заменить $_server[remote_addr] на ip клиента в php за двумя nginx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от lamar , 6 месяцев назад

@jeromy_ruecker 

Для замены $_SERVER['REMOTE_ADDR'] на IP-адрес клиента в PHP на двух серверах Nginx, можно использовать следующий подход:

  1. Создайте пользовательскую переменную в конфигурации Nginx на первом сервере. Откройте конфигурационный файл Nginx (обычно это файл /etc/nginx/nginx.conf) и добавьте следующую строку внутри блока http:
1
2
3
4
5
6
http {
    ...
    set_real_ip_from 127.0.0.1;  # IP-адрес второго сервера Nginx
    real_ip_header X-Forwarded-For;
    ...
}


  1. Перезагрузите сервер Nginx на первом сервере для применения изменений:
1
sudo systemctl reload nginx


  1. Откройте конфигурационный файл Nginx на втором сервере и добавьте следующую строку внутри блока server:
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. Перезагрузите сервер Nginx на втором сервере для применения изменений:
1
sudo systemctl reload nginx


  1. Теперь переменная $_SERVER['REMOTE_ADDR'] будет содержать IP-адрес клиента, передаваемый с прокси-сервера.


Пожалуйста, обратитесь к документации Nginx для получения более подробной информации о настройке прокси-сервера и настройке передачи IP-адреса клиента.