가비아 + nginx 로 Https 배포하기

no.oneho·2023년 10월 30일
0

HTTPS 배포해보기

목록 보기
2/3

먼저 가비아의 도메인을 하나 구매했다.

할인하는거로 잘 고르면 되는데 나 같은 경우는 store, stop이 서비스에 맞지 않는 도메인같아 1900원인 .site 를 골랐다.


구매 후 DNS 관리에서 EC2 를 연결해주면 된다. TLS는 3600으로 줬다.

도메인은 구매하자마자 바로 접속이 안되는데

https://www.whatsmydns.net

위 사이트에서 내가 등록한 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포트와 동일한 화면이 나옴을 알 수 있다!

이제 스웨거 설정만 남았으니 다음 글에서 포스팅하도록 하겠다

profile
안녕하세요 백엔드 개발자를 지망하고있는 노원호라고합니다.

0개의 댓글

관련 채용 정보