WebClient Proxy

종현·2024년 2월 5일

외부 Api 통신 시, WebClient로 통신을 진행하고 있다.
그러던 중, 서버 도메인의 IP가 동적으로 바뀌는 곳이 발생하였다.
현재 AWS 방화벽 정책에서 IP로밖에 제한할 수 없다고 하여 방화벽 세팅을 위해서 Proxy 서버를 추가로 세팅하였다.

  • 기존 WebClient Bean 설정
@Bean
public WebClient webClient(@Value("${url}") String url) {
	HttpClient httpClient = HttpClient.create();
	
	return WebClient.builder()
			.baseUrl(url)
	        .clientConnector(new ReactorClientHttpConnector(httpClient))
	        .build();
}
  • 위 코드와 같이 Client -> url 형태로 api를 요청하고 있다.
  • 하지만, url 전송 전에 proxy서버를 거쳐야 한다.

@Value("${proxyUrl}")
private String proxyUrl;

@Value("${proxyPort}")
private String proxyPort;

@Bean
public WebClient webClient(@Value("${url}") String url) {
	HttpClient httpClient = HttpClient.create()
    			.proxy(item -> item.type(Proxy.HTTP)
                	.host(proxyUrl)
                	.port(proxyPort));
	
	return WebClient.builder()
			.baseUrl(url)
	        .clientConnector(new ReactorClientHttpConnector(httpClient))
	        .build();
}
  • 위와 같이 proxyUrl:proxyPort 로 요청하게끔 처리하였다. (Client -> Proxy -> url)

0개의 댓글