[Nginx] Try Files & Named Location
- Nginx
- 2020. 8. 27.
이전글에 이어서 Nginx의 configuartion에 대해 알아보도록 하겠습니다.
7. Try Files
try files은 server & location context에서 사용합니다.
try files은 rewrite와 비슷하게 모든 request에 대해 일치하는 path를 앞에서 부터 순서대로 비교한뒤 root에 존재하는 path를 rewrite 하는 명령어입니다.
server {
listen 80;
server_name 54.180.79.141;
root /sites/demo;
try_files /thumb.png /greet;
location /greet {
return 200 "Hello User";
}
}
예를 들어 위와 같이 try_files를 작성하면 호출되는 모든 request에 순서대로 앞에서부터 path를 확인후 만약 해당 path가 root에 존재한다면 해당 path로 rewrite 합니다.
반대로 root 경로에 해당 path가 존재하지 않을 경우엔 해당 path는 건너뜁니다.
example
• /sites/demo/thumb.png가 있는지 확인 -> 있으면 /thumb.png return
• /sites/demo/thumb.png가 없으면 -> /sites/demo/greet 있는지 확인 -> 있으면 /sites/demo/greet return
/thumb.png는 저의 root 경로인 /sites/demo에 존재하므로 모든 request에 대해 아래와 같이 /thumb.png를 return 합니다.
/minho
/everything
만약 아래와 같이 nginx.conf를 변경하면 /cat.png는 root에 존재하지 않으므로 /greet를 rewrite 합니다.
server {
listen 80;
server_name 54.180.79.141;
root /sites/demo;
try_files /cat.png /greet;
location /greet {
return 200 "Hello User";
}
}
/minho
/everything
앞의 모든 path가 존재하지 않을 경우 항상 마지막 path는 root에 존재하지 않더라도 rewrite 됩니다.
예를 들어 아래와 같이 작성한경우 앞의 2개 path가 존재하지 않는 경우 /404 path가 root에 존재하지 않더라도 항상 /404 path로 rewrite 됩니다.
server {
listen 80;
server_name 54.180.79.141;
root /sites/demo;
try_files /cat.png /greet /404;
location /404 {
return 404 "Sorry, that file could not be found";
}
location /greet {
return 200 "Hello User";
}
}
위의 conf에서 /greet와 /404 둘다 root에 존재하지 않음에도 /404로 rewrite 되는 것을 확인할 수 있습니다.
위와 같은 특성과 $uri를 사용해서 에러페이지를 작성하는 것도 하나의 방법이 될 수 있을 것 같습니다.. 😎
8. Named Location
named location을 사용하면 아래와 같이 변경해 사용할 수 있습니다.
server {
listen 80;
server_name 54.180.79.141;
root /sites/demo;
try_files /cat.png /greet @404;
location @404 {
return 404 "Sorry, that file could not be found";
}
location /greet {
return 200 "Hello User";
}
}
'Nginx' 카테고리의 다른 글
[Nginx] Worker Process (0) | 2020.08.27 |
---|---|
[Nginx] Logging (0) | 2020.08.27 |
[Nginx] Redirect & Rewrite (0) | 2020.08.27 |
[Nginx] Location Block & Variables (1) | 2020.08.27 |
[Nginx] Configuration (1) | 2020.08.27 |