먼저 가비아의 도메인을 하나 구매했다.
할인하는거로 잘 고르면 되는데 나 같은 경우는 store, stop이 서비스에 맞지 않는 도메인같아 1900원인 .site 를 골랐다.
구매 후 DNS 관리에서 EC2 를 연결해주면 된다. TLS는 3600으로 줬다.
도메인은 구매하자마자 바로 접속이 안되는데
위 사이트에서 내가 등록한 dns가 현재 접속이 가능한지 알 수 있다.
접속이 가능해지면 이제 nginx가 설치된 우분투 서버에 접속한다.
오늘의 목표인 아키텍쳐이다!
http 80이나 https 443 포트로 접속하면 NGINX에서 8080포트가 열려있는 도커 컨테이너로 연결시켜 줄 것 이다.
이번 포스팅에서는 docker 관련 세팅은 전혀 건드리지 않을 것이기에 docker 세팅은 다른 포스팅에서 소개하고 nginx만 보도록 하겠다.
지난 포스팅에서 nginx 설치까지 했었는데 이제 내 사이트로 접속하면 docker 컨테이너를 바라볼 수 있게 프록시를 설정해주겠다.
먼저 etc/nginx/sites-available path로 들어간다
cd /etc/nginx/sites-available
폴더 안에 default 파일을 사용해도 좋지만 여러 도메인을 관리하려면 따로 파일을 만드는게 더 좋다고 한다.
sudo vi [domain].site
domain 에는 본인의 도메인을 적으면 된다. 나같은 경우는 heejinbook.site
server {
listen 80;
listen [::]:80;
server_name heejinbook.site;
location / {
return 308 https://$host$request_uri;
}
}
먼저 80포트로 들어오면 https로 리다이렉션 시켜준다.
여기까지 완료했으면 똑같은 파일을 sites-enabled 에도 작성을 해 줘야하는데
어차피 같은 내용을 작성할거니 소프트링크를 걸어준다.
sudo ln -s /etc/nginx/sites-available/heejinbook.site /etc/nginx/sites-enabled/
그리고 nginx.conf 파일을 열어
server_names_hash_bucket_size 64; #주석해제
해당 구문을 주석해제 해준다.
마지막으로
sudo nginx -t #구동 테스트
sudo service restart
-t 명령어로 문법 오류가 없는지 체크한 후 성공하면 스타트나 리스타트를 해준다.
여기까지 완료가 되었으면 이제 https 적용을 실제로 해볼 시간이다.
lets encrypt를 사용하여 ssl을 발급해보겠다.
sudo snap install certbot --classic
sudo certbot --nginx -d domain.com -d heejinbook.site
본인 이메일을 입력하라는데 입력하고 설치가 끝나면
다시한번
sudo vi /etc/nginx/sites-available/[domain].site
를 확인해보자
443 server 블록이 생성되었고, ssl 관련 코드가 입력되어있다.
이제 여기에 리버스 프록시를 적용하여 https로 작성 시 도커 컨테이너가 올라가 있는 ec2.url:8080 으로 우회를 시켜보자
server {
listen 80;
listen [::]:80;
server_name heejinbook.site;
location / {
return 308 https://$host$request_uri;
}
}
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
server_name heejinbook.site;
ssl_certificate /etc/letsencrypt/live/heejinbook.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/heejinbook.site/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass ec2.url:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
proxy_pass 뒤에 스프링부트가 배포되어있는 ec2 url을 바라볼 수 있게 설정해준다.
파일 수정 후 다시
sudo nginx -t #구동 테스트
sudo service restart
이 후 배포서버로 접속을 해보면?
기존 ec2의 8080포트와 동일한 화면이 나옴을 알 수 있다!
이제 스웨거 설정만 남았으니 다음 글에서 포스팅하도록 하겠다