자바 서버 에서 클 라 이언 트 가 요청 한 실제 ip 가 져 오기

3862 단어 nginx
1. nginx 프 록 시 직접 코드 에서 HttpServletRequest 를 호출 하 는 getRemoteAddr () 방법 을 설정 하지 않 고 클 라 이언 트 가 요청 한 실제 ip 를 가 져 옵 니 다.
@GetMapping("/getIp")
    public String getIp(HttpServletRequest request){
        return request.getRemoteAddr();
    }

2. nginx 를 설정 하여 클 라 이언 트 가 실제 ip nginx 의 설정 을 요청 합 니 다.추가 (proxy set header X - Forward - for $proxy add x forward for) 또는 (proxy set header X - Forward - for $http x forward for) 예 를 들 어:
location /TEST {		
     uwsgi_param X-Real-IP $remote_addr;
	    proxy_set_header X-Forwarded-For $http_x_forwarded_for;
#	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass   http://localhost:8080/;
 }

$remote_addr: 만약 에 nginx 프 록 시 서비스 가 한 층 만 있다 면 이것 은 클 라 이언 트 의 실제 ip 입 니 다. 만약 에 많은 nginx 프 록 시 서비스 가 있다 면 이것 은 이 층 의 이전 nginx 프 록 시 서비스의 IP 주소 $proxy 입 니 다.add_x_forwarded_for: 이것 은 연 결 된 문자열 입 니 다. 첫 번 째 는 항상 클 라 이언 트 의 실제 ip 입 니 다.x_forwarded_for: 클 라 이언 트 실제 ip
한 층 만 퍼 가기 하면 이 세 개가 똑 같 아 요.
(공유 기 가 나 눠 주 는 내부 망 이 라면 내부 망 의 ip 를 얻 었 습 니 다. 외부 망 ip 을 얻 으 려 면 요청 할 수 있 습 니 다.https://xaxaxax.xyz/TEST/getIp 이 주 소 는 제 가 직접 만 든 것 이 고 타 오 바 오 를 방문 할 수 있 습 니 다).
자바 코드 중: 클 라 이언 트 의 실제 ip 가 져 오기, 요청 헤더 중 X - Forward - For 1 가 져 오기): @ RequestHeader 주석 을 통 해 ip 가 져 오기
@GetMapping("/getIp")
public String getIp(@RequestHeader("X-Forwarded-For") String ip){
    return ip;
}

2): HttpServletRequest 를 통 해 ip 가 져 오기
@GetMapping("/getIp")
public String getIp(HttpServletRequest request){
    return request.getHeader("X-Forwarded-For");
}

좋은 웹페이지 즐겨찾기