У меня установлены nginx, php7 и http_realip_module.nginx real client ip не работает
У меня 1 сервер, обслуживающий 2 веб-сайта.
сайт 1 Nginx конфигурации:
server {
...
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_read_timeout 300;
proxy_set_header REMOTE_ADDR $http_x_real_ip;
proxy_set_header X-Forwarded-For $http_x_real_ip;
}
}
это заполнит IP-адрес клиента, когда я сбросить $ _SERVER [ 'REMOTE_ADDR "]
сайт 1 подключается к сайту 2 с помощью завиток как просто апи..
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_URL, $serverUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"REMOTE_ADDR: ".$_SERVER['REMOTE_ADDR'],
"HTTP_X_FORWARDED_FOR: ".$_SERVER['REMOTE_ADDR'],
));
$result = curl_exec($ch);
сайт 2 Nginx конфигурации:
server {
...
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_read_timeout 300;
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
}
}
Я вижу, что скрипт на сайте 2 вызывается, но когда я проверяю переменную $ _SERVER ['REMOTE_ADDR'] в PHP, она имеет IP-адрес сервера, а не IP-адрес клиента. это настройка nginx здесь?
Как я могу заставить это работать правильно?
, похоже, не сработало? как я смотрю дальше на curl, он не смотрит, чтобы посылать заголовки на страницу site2 php. Переменная $ _SERVER содержит переменную X_CLIENT_REMOTE_IP? – Ourx
Вы пробовали просто сделать 'print_r ($ _ SERVER);'? – FrankerZ
typo: переменная $ _SERVER -doesnt- содержит переменную X_CLIENT_REMOTE_IP – Ourx