https 적용 - boostcampwm-2022/web33-Mildo GitHub Wiki
✂️ 분배된 이슈
- https 적용(#32)
🚩 구현 목표
- Mildo에 https 적용하여 사용자 위치 추적 기능 구현
🍀 세부 목표
- domain 구매
- ssl 인증서 구매
- nginx에 https 적용
- 네이버 지도 api, 네이버 Oauth 주소 변경
- 서버 요청을 proxy 설정
🖥️ 구현 내용
도메인 적용하기
-
godaddy에서 [mildo.live](http://mildo.live) 도메인 구매 완료
-
godaday에서 [mildo.live](http://mildo.live) 도메인 dns 연결을 우리 ip 118.67.143.49로 설정
- 내 제품 - dns 레코드
-
배포 서버의 nginx에서 도메인 적용
-
/etc/nginx/sites-enabled/default.conf에서 server name을 아래와 같이 적용
-
네이버 지도 api에서 도메인을 허용 후 nginx 재시작하면 도메인 적용
-
-
어김없이 cors에러 발생
- 백엔드의 .env의 client url을 도메인으로 변경하여 해결
- https 적용 후 다시 변경해야해서 github actions secret을 일단 냅둠
-
ip 주소에서 도메인으로 리다이렉트 시키지 않으면 ip 주소로도 접속이 되고 ip 주소에서는 cors에러가 계속 발생하므로 리다이렉트 시켜줘야함
-
/etc/nginx/sites-enabled/default.conf에서 server{} 를 새로 하나 아래와 같이 만든다
-
https 적용하기
- letsencrypt ssl 인증서를 받기 위한 certbot 설치
- 우분투에 인증서를 받기 위한 certbot은 여러 개가 있는데 그냥 아래거 사용함
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get install python-certbot-nginx
-
sudo certbot --nginx -d
자신의도메인
입력하면 뭐 또 입력하라고 나오는데 대충 동의하고 인증서 설치- 설치 경로는 /etc/letsencrypt/live/www.mildo.live/ 인증서 pem과 key pem 다 들어 있음
-
/etc/nginx/sites-enabled/default.conf에서 기존 http 연결을 아래와 같이 설정하여 https 연결로 바꾸기
-
프로토콜이 달라 Mixed Content 에러 발생
- https에서 http로 요청하면 에러가 발생하니 proxy 설정을 해줘야함
-
아래와 같이 443 포트에서 /api로 접속을 하면 백엔드 서버로 보내주면 됨
- client에서 사용하는 환경변수는 https://www.mildo.live/api로 바꿔주면 되는데 그럼 알아서 [http://www.mildo.live:3001/api로](http://www.mildo.live:3001/api로) 대리 전달함
- 여기서 몇시간 걸렸는데 알고 보니 location /api 부분에 try_files가 있으면 안됐음
- 자꾸 404 에러가 났었는데 정확한 이유는 여기 보기 https://slog97.tistory.com/40