nginx서버의 설정파일
서버 기능을 설정하는 블록 이며,
어떤 Host:port로 요청을 받을지 결정한다.
예)
클라이언트가 웹서버에 어떠한 주소를 포트와함께 요청을 하면,
웹서버는 config를 통해 요청주소를 확인한다.
server {
listen 8080;
server_name hello.com www.hello.com;
}
server {
listen 5050;
server_name hyungyoo.co.kr www.hyungyoo.co.kr;
}
http프로토콜을 사용하겠다고 선언하는 블럭이며,
또한 server blocke들은 http block안에 위치한다.
요청 URI를 분석하여 세부설정을 한다.
예)
http {
server {
listen 8282;
server_name www.hello.com;
location / {
return 200 "hello";
}
location /a {
return 200 "hello-/a";
}
location /a/ {
return 200 "hello-/a/";
}
}
}
다음과 같은 conf파일로 nginx를 동작시킨후, curl로 접근하였을때의 결과값:
curl www.hello.com:8282
// hello
curl www.hello.com:8282/a
// hello-/a
curl www.hello.com:8282/a/
// hello-/a/
하지만 다음과같은 상황에서, conf에서 설정하지않은 파일도 실행이되는 경우가있다.
즉, prefix만 맍으면 뒤에 문자열이 있어도 동작한다.
위와 같이 "/" 만으로 match를 한것은 "prefix match"라고한다.
예)
curl www.hello.com:8282/b
// hello
위와같은 prefix match를 하지않기위해서는 "exact match"를해야한다.
"="를 이용한다!
location = / {
return 200 "hello";
}
// terminal
curl www.hello.com:8282
// not found
문자열이아닌 파일을 리턴(html, png등)
location /images {
root /tmp;
try_files $uri =404;
}