Directive Flashcards
Nginx 설정파일에서
이름과 값으로 이뤄진 걸 뭐라고 하는가?
Directive
Context는 무엇인가?
Directive를 넣을 수 있는 곳
mail 안쪽을 뭐라고 지칭하는가?
mail context
이 상태에서
perisan/12.png 로 요청을 보내면 nginx는 어떻게 처리하는가?
/var/www/cat/persian/12.png 로 요청을 한다
http {
server {
listen 80;
server_name 123.45.78.90;
root /var/www/cat } }
이 상태에선 css 파일이 안읽히는 이유는?
아마 타입을 인클루드 안 한 것 같은데
엔티티 헤더 필드의
Content-Type이
기본값인 text/plain으로 응답하기 때문
엔진엑스에서 타입이 정의되어있는 파일은?
/etc/nginx/mime.types
css, js의 파일이
text/plain으로 읽히면
어떻게 해야하는가?
types context로 정의하거나
제일 좋은 방법은
include mime.types를 http context 안에서 사용한다
location 블록은
값을 기준으로
요청을 Intercepting 하는 거라고 생각하면 된다
/greet으로 들어가면 어떻게 되는가?
상태코드 200과 함께
엔티티바디에
Hello from “/greet”!
가 나온다
location /greet {
…
}
위의 블럭으로
/greeting
/greet/hello
로 접속해도 동일하다
OX
O
이걸 prefix match라고 부른다
정확하게 /greet 블럭으로 요청했을 때만 응답하고 싶다면
location = /greet {
# do something
}
location 블록에 정규표현식을 사용하려면
location ~ /greet[0-9] {
# do something
}
이런 식으로 사용하면 된다
( 이건 case sensitive )
location 블록에 정규표현식을 사용하면서
case sensitive를 하지않으려면
location ~* /greet[0-9] {
# do something
}
엔진엑스의 location 블록의 식들은
우선순위가 있다?
OX
우선순위가 있기때문에
공식문서를 참조해야한다
Nginx의 URI 매칭 우선순위
Preferential Prefix
location ^/greet { return 200 'Hello from "/greet"!'; }
이거는 basic prefix랑 동일하지만
우선순위가 더 높다
Nginx는 내장 변수가 있다??
O,
https://nginx.org/en/docs/varindex.html
에 들어가면 내장 변수 목록을 볼 수 있다.
여기서 쿼리의 값을 넘겨주면 어떻게 되는가?
Nginx에 조건절을 추가할 수 있다?
OX
O
Nginx에 custom variable을 지정할 수 있다?
O,
set $weekend ‘No’;
이런 식으로 지정한다
/logo로 접속하면 어떻게 되는가?
root + /thumb.png
로 리다이렉트 된다
307 redirect 된다면
URI도 바뀐다
Rewrite와 Redirect의 차이점은?
Rewrite는 내용만 바뀌지만
Rewrite는 내용 + URI도 바뀐다
Rewrite를 설명해봐라
/user/단어 하나
를 만족하는 URI로 접속하면
/greet로 Rewrite 한다
Rewrite 룰은
인자를 캐치해서 따로 Rewrite는 불가능하다?
X,
이런 식으로 응용됨
try_files
Directive는 어떤 context에 쓰이는가?
server, location.. etc
try_files 구문을 설명해라
파일의 존재 유무에 따라 처리한다.
만약
root + /thumb.png 가 있다면 그걸 로드하고
없다면
root + /greet 로 Rewrite함
try_files 에서
마지막 argument에 닿으면
Internal rewrtie로 취급된다
Nginx의
log 타입
error.log
access.log
서버로의 모든 요청을 기록한 로그
access.log
‘Silently failed’ 된 경우에는
명시적으로 에러가 발생했는지 알 수 없지만
error.log 들어가면 에러가 있다.
location 별로
엑세스 로그를 따로 다룰 수 있다
OX
O,
컨텍스트에서 로그를 기록하고싶지 않다면 어떻게 해야하는가?
access_log off;
엔진엑스의 Directive의 3 종류
Array Directive
Standard Directive
Action Directive
엔진엑스는 정적인 콘텐츠만 처리할 수 있다
OX
O, 엔진엑스 단독으론 동적 콘텐츠를 처리할 수 없다
엔진엑스가 동적인 웹사이트를 처리하는 구조는
리버스 프록시랑 똑같다
index directive는?
root + location 의 위치로 가면
처음으로 인덱싱할 파일을 지정한다
FastCGI 프로토콜은 단순하게 비유해서 이해하려면
바이너리 데이터를 전달하는
HTTP 프로토콜이라고 이해하면 된다
소켓은 쉽게 비유해서 이해하려면
HTTP 포트라고 생각하면 된다