나는 axios와 함께 노드 익스프레스 서버를 사용하고 있으며 요청을 프록시하기 위해 백엔드에 대한 API 호출을 요청하고 있지만 서버 대신 사용자 세부 정보를 보내고 싶습니다.
예를 들어:
내 웹 사이트 -> 사용자가 사진을 클릭합니다. -> get이 내 서버 A로 호출됩니다. -> 서버가 데이터를 검색하기 위해 다른 서버 B를 호출합니다.
이제 B 서버는 ip, geo, isp 등과 같은 A의 서버 정보를 볼 수 있습니다. B 서버가 사용자가 웹 사이트에서 직접 이 서버를 호출했다고 생각하도록 사용자 데이터를 A 서버로 전달하려면 어떻게 해야 합니까?
답변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를 포함시키는 것이 좋습니다.
기본 예, 서버 A에서 PHP를 사용하고 있는 경우(이 양식은 서버 B로 전달되기 전에 서버 A로 제출되었습니다):
<input type="hidden" id="visitorIP" name="visitorIP" value="<?php $_SERVER['REMOTE_ADDR']?>">