저번 과정에서 HTTPS 요청을 처리하도록 인증서를 발급받고 적용하는 과정에서 iptables를 이용하여 포트포워딩을 하면 443 포트를 사용하는 다른 프로그램의 통신에서 문제가 발생했었다. 그래서 이 방법 대신 NGINX를 이용하여 리버스 프록시를 구현해 사용하기로 했다. 이렇게 하면 HTTP 요청을 HTTPS로 리다이렉트 시키는 등의 작업도 간단하게 처리할 수 있다.
NGINX 설치 및 설정
나는 API 서버가 있는 GCP VM 인스턴스에서 진행하였다.
sudo apt update
sudo apt install nginx
위 명령어로 NGINX를 설치한다.
그러면 /etc 폴더 내에 nginx라는 폴더가 생겼을텐데 여기로 들어간다.
cd /etc/nginx/sites-available
위 경로로 이동해보면 폴더 안에 default라는 파일이 하나 있는데 여기서 요청을 어떻게 처리할 것인지 설정을 할 수 있다.
내부를 살펴보면 기본 설정이 있지만 나는 내가 원하는 대로 작성할 것이기 때문에 백업을 해두고 내용을 다 지웠다.
그리고 다음과 같이 작성해주었다.
server {
listen 80;
server_name api.delibird.store;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name api.delibird.store;
ssl_certificate /etc/letsencrypt/live/api.delibird.store/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.delibird.store/privkey.pem;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
여기서 내가 헷갈렸던 부분이 있는데 server_name이 클라이언트 delibird.store가 아닌 클라이언트에서 요청하는 서버의 도메인을 말한다. 그러니까 api.delibird.store로 지정해야 한다.
위 부분은 HTTP 요청이 들어오면 HTTPS로 리다이렉트해서 다시 처리하라는 부분이다.
아래는 이전에 발급받았던 인증서를 가지고 HTTPS 요청을 처리하는데 내가 설정한 gateway-service의 포트인 8000번으로 HTTPS 요청을 전달한다. 아래 나머지 것들은 원래의 클라이언트 요청 헤더나 IP 정보 등을 그대로 보내기 위해 필요한 부분이다.
이렇게 작성한 뒤 파일을 저장하고
sudo nginx -t
위 명령어로 문제가 없는지 테스트한다.
sudo systemctl restart nginx
그리고 설정을 적용시키면 된다.
[Infra] 리버스 프록시를 이용한 HTTPS 적용하기 with NginX
리버스 프록시의 개념과 NginX를 이용하여 HTTPS를 적용하는 과정을 살펴본다.
velog.io
해당 블로그를 보니 certbot의 플러그인으로 nginx 리버스 프록시 설정을 간단하게 할 수 있는 것 같다. 나는 해보진 않았다.
테스트
HTTP로 요청하면 HTTPS로 리다이렉트 되는 것을 확인할 수 있다.
HTTPS로 요청하면 바로 응답이 온다.
'공부 > Spring Cloud' 카테고리의 다른 글
딜리버드이츠 프로젝트 기획 발표 자료 (0) | 2024.06.27 |
---|---|
[Spring Cloud] SameSite와 Secure로 프론트 백엔드 쿠키 교환하기 (0) | 2024.06.24 |
[Spring Cloud][GCP] Gateway에서 HTTPS 사용하기 (pem -> p12) (0) | 2024.06.23 |
[Spring Cloud] 나를 괴롭히는 CORS 오류 해결하기 (0) | 2024.06.18 |
[Spring Cloud] EC2에서 Docker Kafka 에러 해결하기 (0) | 2024.05.13 |