'웹서버'에 해당되는 글 1건

  1. 2015/04/20 용비 04. Serving Static Content

서버의 주요한 기능은 이미지나 HTML 파일과 같은 파일들을 제공하는 것이다. 여러분은 서로 다른 디렉토리(HTML 파일들이 있는 /data/www 디렉토리와 이미지를 포함하고 있는 /data/images 디렉토리) 있는 파일들을 서로 다른 요청에 의해서 제공하는 예제를 구현할 있다. 그렇게 하기 위해서는 configuration 파일을 수정하여 http block내에 있는 server block 2개의 location block 설정하면 된다.


먼저, /data/www 디렉토리를 생성하고 임의의 텍스트를 가진 index.html 파일을 저장하자. 그리고 /data/images 디렉토리를 생성하고, 임의의 이미지 파일을 위치시킨다.

다음으로 nginx configuration file open하면 이미 기본적으로 server block 여러 예제들이 포함되어 있다. (대부분 코멘트로 막혀 있다.) 이제 모두 코멘트로 막고, 새로운 server block 추가해 보자.


http {

server {

}

}


일반적으로, configuration file 요청을 받을 서로 다른 port server name으로 구분된 여러 server block 가질 있다. Nginx에서 request 처리할 server 결정하고, server block내에 정의된 location 지시어(directive) 파라미터와는 반대로 Request header 특화된 URI를 테스트한다.


Server block내에 다음 location block 추가한다.


location / {

root /data/www;

}


location block prefix "/" 시작하는 request URI 특화되어 있다. URI root directive 특화된 path 추가될 것이다. 따라서, 로컬 파일 시스템상의 요청된 파일은 /data/www 있다. 만약 여러 개의 매칭되는 location block 있다면, nginx 가장 prefix 선택한다. 위에서 제공된 location block 가장 짧은 prefix이다. 따라서, 모든 request에는 location block 사용된다.


다음으로, 두번째 location block 추가해 보자.


location /images/ {

root /data;

}


이것은 /images/ 시작하는 request 매칭될 것이다. (location / 역시 매칭되기는 하지만, 짧은 prefix이다.)

결과적으로 server block configuration 다음과 같다.


http {

server {

location / {

root /data/www;

}


location /images/ {

root /data;

}


}

}



이것은 이미 표준 포트 80으로 요청을 받는 동작하고 있는 server 설정이다. 따라서, localhost 접속할 있다. /images/ 시작하는 URI 요청에 대한 응답에서 server는 /data/images 디렉토리에 있는 이미지 파일을 보낼 것이다. 예를 들어, http://localhost/images/example.png 요청하면 nginx /data/images/example.png 파일을 리턴할 것이다. 만약 그런 파일이 없다면, nginx 404 error 리턴할 것이다. /images/ 시작하지 않는 request URI 대해서는 /data/www directory 맵핑된다. 예를 들어, http://localhost/some/example.html 요청에 대해서 nginx /data/www/some/example.html 파일을 리턴할 것이다.


새로운 configuration 적용하기 위해서는 아직 nginx 시작되지 않았으면 nginx start하고, 이미 nginx 시작했다면, master process reload signal 보낸다. 실행 command 다음과 같다.


nginx -s reload


기대한 대로 동작을 하지 않는 경우에는 access.log error.log에서 이유를 찾아볼 있다. 로그 파일들은 /usr/local/nginx/logs /var/log/nginx에서 찾아볼 있다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/684