REMOTE_ADDR выдаёт IP адрес сервера

На моём VPS сервере с Debian в связке Apache + nginx при попытке определения IP адреса пользователя из PHP при помощи переменной $_SERVER['REMOTE_ADDR'], я получаю IP адрес самого сервера, на котором запущен PHP.

Это происходит потому, что nginx выступает в роли прокси-сервера между клиентом и Apache, из-за чего последний видит только IP адрес сервера.

Чтобы пофиксить этот баг, достаточно подключить в конфиге Apache (/etc/apache2/apache2.conf) модуль mod_rpaf и внести пару строк настроек:

LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so
<ifmodule mod_rpaf.c>
  RPAFenable On
  RPAFsethostname On
  RPAFproxy_ips 127.0.0.1 ТУТ_ВАШ_IP_АДРЕС
	RPAFheader X-Forwarded-For
</ifmodule>

Источник: https://www.kobzarev.com/linux/remote_addr-vidaet-ip-adres-servera/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: