https://www.wsgvet.com/ubuntu/129
라엘님의 자료를 도커로 구현했는데, PHP보다는 Nginx 자체 기능을 이용하는게 더 낫다고 하셔서 찾아보다가 의문점이 들어서 문의합니다.
링크( https://jojoldu.tistory.com/60 )를 보고 다시 Nginx proxy cache를 활용한 이미지 캐시 서버 구축에 궁금증이 있습니다.
예를들어 위와 같이 이미지 캐시서버를 구축한다고 하면
proxy_pass http://원본서버IP
위와 같이 작업하게 될텐데요.
그렇다면 server_name의 경우 기존 운영하던 도메인일 것이고,
원래 서버의 도메인 설정은 버리고, 캐시서버 Nginx에서 해당 도메인을 가져가야될 것 같은데요.
이렇게 셋팅하는게 맞을까요?
정리하면
(1) 기존
요청 -> Nginx 단독서버
(2) 이미지캐시 서버 구축 후 proxy cache 서버 흐름도
요청 -> 이미지캐시서버(Nginx proxy cache, 원본서버의 도메인을 가짐) 에서 이미지만 캐시 -> 나머지 proxy_pass로 원본 서버 IP(원본 서버는 도메인 설정은 버리고 IP만으로 소통)로 통과
이렇게 이해하는게 맞는걸까요?
---
만약에 이게 맞다면, 굳이 원본서버에서 이미지 경로를 img.example.com 으로 변경할 필요가 없을 것 같은데...
아직도 헷갈리네요.
두 가지 방법이 있습니다. 도메인을 바꾸지 않고 그대로 사용하신다면 이미지파일뿐 아니라 사이트 전체를 캐시서버를 경유하여 접속하게 됩니다. 이미지는 캐싱하고, 일반 HTML 페이지는 캐싱 없이 그냥 proxy 처리만 하고요. 이게 클플과 같은 방식입니다.
반면에 img.example.com 같은 서브도메인을 만들어 캐시서버에 연결한다면, 이미지파일만 캐시서버를 통해 다운받고 실제 사이트 접속은 원본 서버를 그대로 사용하게 됩니다. proxy_pass에 원본서버 도메인이 들어가거나, IP를 넣고 Host 헤더를 별도로 지정해 주게 되지요.
캐싱할 필요도 없고 캐싱해서도 안 되는 HTML 페이지를 보는 것까지 모두 캐시서버를 경유한다면 트래픽도 이중으로 소모되고 속도도 느려지기 때문에, 대부분 서브도메인을 분리하는 방법을 선택합니다. 실제로 캐시서버에 흔히 사용되는 AWS Lightsail이나 Vultr 같은 해외업체들과 궁합이 좋지 않은 국내호스팅이라면 굉장히 느려질 수 있습니다. (대표적으로 통큰아이 KT IDC는 AWS와 상극입니다;;;) 반면, 사이트 전체를 proxy 처리한다면 클플처럼 원본서버 IP를 숨겨서 약간의 디도스 방어 효과를 얻을 수 있습니다.