프로그래밍/개발

[개발] nginx에서 https 적용하기

riroan 2023. 2. 23. 12:05

지난시간 nginx설정한 도메인으로 들어가보면 http연결이라고 뜨면서 주의요함이라는 메시지를 받는다.

https연결을 사용하지 않았기 때문이다.

그리고 mixed content문제라고 해서 프론트 접속할 때 https를 쓰고 백엔드 접속할 때 http를 사용하면 불러오지 못하는 문제가 생긴다.

특히 기본 https를 제공하는 gh-pages랑 http로 설정한 백엔드로 접속하려고 할 때 의문도 모른채 생기는 오류를 접할 수 있다.

그래서 요즘은 모두 https를 사용하는게 좋다.

nginx에서 https를 적용하는 법을 알아보자.

 

nginx 파일

# /etc/nginx/sites-available/aaa.riroan.com

server {
        listen 80;
        server_name aaa.riroan.com;
        location / {
                root /{some_path};
                index index.html index.htm;
                try_files $uri $uri/ /index.html;
        }
}

우리는 80번만 listen하고 있기 때문에 https를 사용하지 않는다.

그렇다면 https는 443이니까 숫자만 바꾸면 될까?

ssl_certificate가 없다고 한다.

https를 사용하기 위해서 ssl 인증서가 필요하다!

ssl 인증서는 해당 도메인이 안전하다는 것을 제 3자가 보증하는 것이다.

(80번 포트로 되돌리자)

 

ssl 인증서 생성

certbot을 사용해 인증서를 받을것이다.

apt install certbot
certbot --nginx

해당하는 도메인을 숫자로 입력하면 자동으로 ssl인증서를 받고 nginx설정을 수정해준다.

이런식으로 자동으로 설정파일에 443접속이 가능하도록 수정해준다.

aaa.riroan.com에 http요청으로 들어오게 된다면 같은 uri를 https로 301 (redirect)한다는 뜻이다.

 

참고로 letsencrypt에서 받은 인증서이기 때문에 경로에 letsencrypt가 보인다.

이제 접속을 하면?

성공적으로 https연결이 가능한것을 확인할 수 있다!