Beginner's Guide - Serving Static Content
웹서버의 중요한 임무는 파일들(images, static HTML pages)을 제공하는 것이다. 당신은 요청에 따라 다른 로컬 디렉터리에서 파일을 처리하는 예를 구현해볼 것이다. (/data/www
(which may contain HTML files) and /data/images
(containing images)). 이를 위해서는 configuration 파일을 편집하고 두 개의 location block이 있는 http block 내의 서버 block을 설정해야 한다.
첫째로 /data/www
디렉토리를 생성하고 텍스트 내용이 포함된 index.html
파일을 만들어라. 그리고 /data/images
디렉토리를 생성하고 그 안에 일부 이미지를 배치하자.
다음, configuration 파일을 열어라. Default conf 파일은 이미 몇 가지 서버 블록의 예가 포함되어 있으며, 대부분 주석이다. 이제 이러한 모든 block을 주석으로 처리하고 새로운 server block을 만들어보자.
http {
server {
}
}
일반적으로 conf 파일에는 listening 하는 포트와 서버 이름으로 구분되는 여러 개의 server
블록이 포함될 수 있다. nginx가 요청을 처리할 서버를 결정하면, 그것은 request의 header에 지정된 URI를 server
block 내에 정의된 location
directives의 매개변수와 비교하여 테스트한다.
아래의 location
block을 server
block에 추가해라
location / {
root /data/www;
}
이 location
block은 request로 부터 나온 URI를 비교하여 /
prefix를 지정한다. 일치하는 request의 경우 URI가 루트 지시문에 지정된 경로, 즉 /data/www
에 추가되어 로컬 파일 시스템에서 요청된 파일의 경로를 형성한다. 일치하는 location
block 이 여러 개 있는 경우 nginx는 가장 긴 prefix를 가진 block을 선택한다. 위의 location
블록은 길이 1의 가장 짧은 prefix를 제공하므로, 다른 모든 location
블록이 일치하는 내용을 제공하지 못하는 경우에만 이 block을 사용한다.
다음, 두번째 location
block을 추가하자.
location /images/ {
root /data;
}
/images/
(location /
도 해당 request와 일치하지만 prefix는 더 짧다)으로 시작하는 request와 일치할 것이다.
server
block의 conf는 다음과 같아야 한다.
server {
location / {
root /data/www;
}
location /images/ {
root /data;
}
}
이것은 이미 표준 포트 80에서 듣고 로컬 컴퓨터 http://localhost/
에서 접근할 수 있는 서버의 작동 중인 구성이다. /images/
로 시작하는 URIs의 요청에 대한 응답으로 서버는 /data/images
디렉토리에서 파일을 전송한다.
예를 들어 http://localhost/images/example.png
요청에 대한 응답으로 nginx는 /data/images/example.png
파일을 전송할 것이다. 이러한 파일이 존재하지 않으면 nginx는 404 오류를 나타내는 오류를 보낼 것이다. /images/
로 시작하지 않는 URI를 사용한 요청은 /data/www
예를 들어 http://localhost/some/example.html
요청에 대한 응답으로 nginx는 /data/www/some/example.html
파일은 보낼 것이다.
새 구성을 적용하려면 아직 시작되지 않은 경우 nginx를 시작하거나 다음을 실행하여 nginx의 마스터 프로세스에 다시 load 신호를 전송하자.
nginx -s reload
예상대로 작동하지 않는 경우 /usr/local/nginx/logs
또는 /var/log/nginx
디렉토리의 access.log
및 error.log
에서 이유를 찾아보자.
* Reference
http://nginx.org/en/docs/beginners_guide.html