Config

42_Cursus·2022년 7월 11일
0

Webserv

목록 보기
3/6

Config

nginx서버의 설정파일
  • nginx에서 설정파일은 /etc/nginx/nginx.conf에 위치
  • 설정파일은 디렉티브(directive)로 관리.
    - simple directive : 블록({ })으로 감싸져있지않음.
    - block directive : 블록({ })으로 감싸져 있음.
  • 설정의 끝은 세미클론으로 표기

Directive

1. Server Block

서버 기능을 설정하는 블록 이며,
어떤 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;
}

2. HTTP Block

http프로토콜을 사용하겠다고 선언하는 블럭이며,
또한 server blocke들은 http block안에 위치한다.

3. Location 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

4. File Return

문자열이아닌 파일을 리턴(html, png등)
location /images {
	root	/tmp;
    try_files $uri =404;
}
profile
etudiant_42

0개의 댓글