728x90
반응형
프록시 서버를 설정해야 할 일이 생겨서 nginx를 사용해서 프록시 서버를 설정했습니다.
프록시 서버는 아래와 같이 특정 프로세스에서 카카오 주소 검색 api를 호출할때 proxy 서버를 통하도록 하기 위해서 설정했습니다.
(spring boot 프로세스 -> nginx 프록시 서버 -> 카카오 주소 검색 api 호출)
1.nginx 설치(ubuntu 환경)
# nginx 설치
sudo apt install nginx -y
# nginx 실행
sudo systemctl enable nginx && sudo systemctl start nginx
# nginx 상태 확인
sudo systemctl status nginx
# nginx 문법 확인
sudo nginx -t
2.default 파일 수정
/etc/nginx/sites-available/default 파일에서 기존에 80 포트 사용 server 블록 삭제 or 주석 처리 후 아래의 서버 블록를 추가합니다.
로컬 서버(127.0.0.1)의 80번 포트에서 수신하도록 설정하고, /kakao/ 경로로 들어오는 요청을 https://dapi.kakao.com 으로 전달할 수 있습니다
server {
listen 127.0.0.1:80;
server_name localhost;
location /kakao/ {
proxy_pass https://dapi.kakao.com/;
proxy_set_header Host dapi.kakao.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
# 필요한 경우 SSL 인증서 검증 설정 추가 가능 (아래 참조)
}
}
3.수정 내용 반영
# 문법 확인
sudo nginx -t
# 시스템 갱신
sudo systemctl reload nginx
# 시스템 재시작
sudo systemctl restart nginx
4.spring boot 소스 수정
var result = restClient.get()
.uri { uriBuilder ->
/*
uriBuilder.scheme("https")
.host("dapi.kakao.com")
.path("/v2/local/geo/coord2regioncode.json")
.queryParam("x", x)
.queryParam("y", y)
.build()
*/
uriBuilder.scheme("http")
.host("localhost")
.path("/kakao/v2/local/geo/coord2regioncode.json")
.queryParam("x", x)
.queryParam("y", y)
.build()
}
.headers { headers ->
headers.set("Authorization", "KakaoAK ${key}")
}
.retrieve()
.onStatus(HttpStatusCode::is5xxServerError) { req, res ->
logger.info { "API 호출이 실패하였습니다. statusCode : ${res.statusCode}" }
}
.body(KakaoDto::class.java)
return result ?: KakaoDto()
5.curl 테스트
curl -i -H 'Authorization: KakaoAK {REST_API_KEY}' \
'http://localhost/kakao/v2/local/geo/coord2regioncode.json?x=126.822486&y=37.196312'
응답결과
{"meta":{"total_count":2},"documents":[{"region_type":"B","code":"4159026222","address_name":"경기도 화성시 남양읍 신남리","region_1depth_name":"경기도","region_2depth_name":"화성시","region_3depth_name":"남양읍","region_4depth_name":"신남리","x":126.81633529935203,"y":37.18600973189887},{"region_type":"H","code":"4159026200","address_name":"경기도 화성시 남양읍","region_1depth_name":"경기도","region_2depth_name":"화성시","region_3depth_name":"남양읍","region_4depth_name":"","x":126.82377585283497,"y":37.21178748486248}]}
728x90
반응형
'개발 > Tool' 카테고리의 다른 글
[InfluxDB] InfluxDB Flux 쿼리와 SQL 비교 (0) | 2025.03.27 |
---|---|
[Keycloak] 외부 DB 인증·인가 이력 저장 및 조회 방법 (0) | 2025.02.05 |
[Jenkins] Jenkins 빌드 번호 변경하는 방법: Script Console 활용 가이드 (0) | 2024.11.18 |
[Jenkins] 파이프라인 빌드 오류 해결: Gradle 설정 문제 (2) | 2024.11.14 |
Keycloak Client 문제 해결: 401 에러 및 DB Node 관련 문제 해결 방법 (0) | 2024.08.23 |