안녕하세요.
기존 boot+vue.js 프로젝트를 ec2+nginx+tomcat을 사용하여 커뮤니티 포폴을 배포했었습니다.
기능이 부족하다고 생각하여 s3를 사용하여 이미지 업로드,수정,삭제를 추가하였는데
로컬에서는 현재 개발을 완료하였습니다.
현재는 이런식으로 받아온
https://버킷이름.s3.region.amazonaws.com/raw/add219b2-8b7c-4204-8a5b-09e44ac2cb17.jpg
형태를 DB에 저장한 후 게시글을 요청하면 이 데이터를 그대로 프론트에 넘겨주는 방식입니다.
그런데 이렇게 public으로 열어놓은 s3버킷의 주소를 공유하면 안된다고 하더라구요.
그래서 아직 추가한 기능은 배포를 안 했습니다.
찾아보니까 cloudFront를 쓰는 방법과 Nginx를 그대로 쓰는 방법 2가지가 있더라구요.
이제와서 CloudFront를 쓰는건 아니라고 생각하여 nginx를 사용해서 하려고 합니다.
그래서 구글링해보니 s3를 Protect로 하고 어떤 설정을 추가한 후에
nginx.conf 파일에 다음과 같이 추가해주도록 되어있더라구요.
*********************************************************************************************************
제가 여기서 궁금한 부분은
기존에는 DB에
url을 https://버킷이름.s3.region.amazonaws.com/raw/add219b2-8b7c-4204-8a5b-09e44ac2cb17.jpg
이렇게 지정해줬었는데
nginx를 사용한다면 위에 설정을 추가 한 후에
DB에 url을 https://도메인이름/file/raw/add219b2-8b7c-4204-8a5b-09e44ac2cb17.jpg
이렇게 저장해야하는 건지가 궁금합니다.
이제외서 cloudfront를 쓰는 건 왜 아니라고 생각함?
글로벌적인 페이지가 아닌데 Nginx로 가능한 부분을 굳이 사용하는거 같아서요
Nginx쓰면 ec2 비용 나가고 nginx에 대한 운영/관리도 필요한 점도 감안해보셈. Cloundfront는 개인 플젝 정도 트래픽이면 사실상 무료임.
그리고 본문에 대한 답변은 님 생각이 맞음.(url)
백엔드 때문에 어차피 ec2는 만들어야 되는거 아닌가요? 초보라서요
아 백엔드랑 nginx를 같은 ec2에 올릴 거면 뭐.. 내가 말한 건 분리 기준
아.. 현재 같은 ec2에 있습니다. 답변 감사드립니다.
아니면 s3의 쓰기 권한을 제어하고 읽기만 열어놓고 그냥 버킷 url써도 됨.
지금 버킷에 권한 getObjcet만 지정되어있고 IAM에서 키 받아와서 백엔드에서 이미지 삽입,삭제 진행하는데 이러면 상관 없다는 말 맞을까요?
그 iam외에는 읽기밖에 안되는 상태면 맞음
네 제가 관련해서 조금 더 찾아보겠습니다
Cloudfront가 훨씬 편함