nginx 서버에서 이미지 등의 static한 파일을 설정하여 serve 하는 방법에 대하여 알아봅니다.

예를들어 아래의 경로로 접근하는 모든 파일들은 서버의 특정 경로에 있는 파일에서 찾아 보여주도록 설정하려고 합니다.

// 접근된 이미지 경로
webisfree.com/images/abc.jpg

// 연결할 서버의 경로
/home/root/public/images

이처럼 이미지 등의 파일 등을 특정 서버의 경로에 바로 연결하기 위해서는 먼저 nginx 설정이 필요합니다. nginx 설정 파일로 이동하여 파일을 편집하도록 합니다.

@ /etc/nginx/site-available/default
server {
  listen 80;
  server_name _;
  location /images {
    root /home/root/public/images;
  }
}

위의 코드는 sever 블럭에 있는 location을 봐주세요. location으로 설정된 /images로 접근되는 경우 해당하는 경로인 /home/root/public/images 의 이미지 및 파일을 보여주게 됩니다. 다시 이 부분만 보면 아래와 같습니다.
location /images {
  root /home/root/public/images;
}

이것으로 모두 알아보았습니다.


! 이미지를 다른 경로로 설정하는 이유는?
위와 같이 이미지 등의 파일을 다른 경로로 설정한 이유는 무엇일까요? 몇 가지 이유가 있을 수 있습니다. 예를들어 하나의 서버이지만 여러개의 사이트를 띄우는 경우... 이미지 등을 함께 사용한다면 똑같은 경로의 이미지 에셋을 함께 사용할 수 있겠죠.

제 경우 이유는 조금 달랐습니다. nextjs를 사용하여 웹을 배포 및 운영하였는데 이 때 어드민, cms 등을 사용하여 새롭게 추가된 이미지 등이 업로드되었지만 실시간으로 로드가 되지 읺더군요.

서버를 재시작하는 등의 방법으로 문제 해결이 가능했지만 매번 새로운 업로드 때마다 서버를 재시작, 리로드하는 번거로움을 해결하기 위해서는 다른 방법이 필요했죠. 그래서 nextjs와 분리하여 static 이미지 요소들은 별도의 디렉토리에 옮겨서 위의 방법으로 사용하였습니다. 비슷한 문제가 있다면 이와 같은 방법으로 해결이 가능합니다.