Я использую сервер Node Express с Axios и запросом API-вызовов для моего бэкэнда для проксирования запросов, но я хотел бы отправлять данные пользователей вместо серверов.
Например:
Мой веб-сайт -> пользователь нажимает на картинку -> get вызывается на моем сервере A -> сервер вызывает другой сервер B для извлечения данных.
Теперь сервер B будет видеть информацию о сервере A, такую как IP, гео, интернет-провайдер и т. д. Как мне переслать такие данные пользователя на сервер A, чтобы сервер B думал, что пользователь вызвал этот сервер напрямую с веб-сайта?
решение1
Ну, это первый ключ к пониманию того, что большая часть информации, которую вы имеете в виду под «geo» и «isp», получена из самого IP-адреса; поэтому то, что вам нужно сделать, — это переслать ее.
Вы не включили много информации о вашей установке, однако я включил два возможных варианта установки.
1. Обратный прокси-сервер
Сервер A — это обратный прокси-сервер, который перенаправляет все запросы на сервер B, используя nginx
— если это так, то мы бы использовали , Forwarded header
который очень хорошо описанздесь.
Пример фрагмента кода:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_pass http://server_b;
}
2. Уровень приложений На сервере A размещен веб-сайт (или другое приложение), который отправляет запрос в бэкэнд на сервер B.
В этом случае, не зная точных принципов работы приложения, я бы посоветовал вам каким-то образом включить IP-адрес посетителя в полезную нагрузку запроса.
Простой пример: если вы используете PHP на сервере A (и эта форма была отправлена на сервер A перед передачей на сервер B):
<input type="hidden" id="visitorIP" name="visitorIP" value="<?php $_SERVER['REMOTE_ADDR']?>">