이전에 기술한 OAuth2.0서버 중 Resource Server에 도메인을 적용하기 위해 Nginx를 사용했다. 자세한 설정들이 생략되어 많이 어색해 보일수 있으니 참고부탁드립니다.
EC2에 Nginx 설치하는 방법도 있었으나 이미 Docker를 사용중이기에 해당 방법은 배제했다.(Docker를 사용해야하는 이유 라는 키워드로 구글에 검색해보기를 추천한다.)
#nginx.Dockerfile
FROM nginx:1.23-alpine #1
RUN rm /etc/nginx/conf.d/default.conf #2
#3
COPY cert/발급받은 인증서}.pem /etc/ssl/certs/secure_sign/{SSL 인증서의 개인 키 파일}.key.pem
COPY cert/발급받은 인증서}.unified.crt.pem /etc/ssl/certs/secure_sign/{SSL 인증서의 인증서 체인 파일}.unified.crt.pem
#4
COPY default.conf /etc/nginx/conf.d/
#default.conf
server { #1
listen 80 default_server;
listen [::]:80 default_server;
server_name {등록한 도메인}.io;
return 301 https://$host$request_uri; #2
}
server { #3
server_name {등록한 도메인}.io; # server_name 지시어에 따라 도메인으로 들어오는 요청을 처리
-
listen 443 ssl;
#4
ssl_certificate /etc/ssl/certs/secure_sign/{SSL 인증서의 개인 키 파일}.crt.pem;
ssl_certificate_key /etc/ssl/certs/secure_sign/{SSL 인증서의 인증서 체인 파일}.key.pem;
location / {#5
proxy_pass https://172.17.0.1:8081; #6
client_max_body_size 256M;
}
}
#docker-compose.yml
version: "3"
services:
spring-app:
container_name: spring-app
image: SpringImage
restart: always
ports:
- "8081:8081"
environment:
TZ: Asia/Seoul
{DB설정생략}
nginx:
container_name: nginx
image: NginxImage
ports:
- "80:80"
- "443:443"
depends_on:
- spring-app
restart: always
environment:
TZ: Asia/Seoul
이 설정을 하기전 단순히 Spring 프로젝트는 Front와 연결해왔기 때문에 미지의 영역이었다. 다행히도 참고할만한 자료들이 많아 기본셋팅을 수월하게 할 수 있었다. 적용에 성공하고 난 뒤에 알게되었는데 Open API를 사용하다보면 v14, v15같은 도메인을 바꿔서 호출해서 버전업그레이드를 하는 경우도 있는데 v14, v15를 리버스 프록시를 이용한다는 것이었다.