HTTP 코어 모듈
HTTP서버의 핵심적인 블록, 지시어, 변수를 포함한다.
블럭
HTTP 모듈은 아래와 같은 세 가지 논리적 블록을 제공한다.
프로토콜 수준(http 블록), 서버 수준(server 블록), 요청 URI 수준(location)
http : 엔진엑스의 HTTP 부문과 관련된 모듈의 지시어와 블록을 정의
server : 하나의 호스트를 선언하는데 사용하며, http 블럭 안에서만 사용할 수 있다. (하나의 웹사이트라고 생각)
location : 웹사이트의 특정 위치에 적용할 설정 그룹을 정의한다. server블록이나 다른 location 블록 안에 삽입할 수 있다.
모듈 지시어
표현 방법 : 지시어 <문맥(사용할 수 있는 블록)>
소켓과 호스트 환경
listen <server> : 웹 사이트용 리스닝 소켓이 사용하는 IP 주소와 포트를 설정
server_name <server> : server블록은 한 개 이상의 호스트명을 지정한다. HTTP 요청 헤더의 HOST값으로 판단한다.
경로와 문서
root <http, server, location, if> : 웹사이트 방문자에게 서비스되는 파일이 위치한 문서 루트를 정의(root /home/foo/index.html)
alias <location> : 특정 location내에서 문서의 위치를 변경하는 용도로 사용한다. (사용해본 적 없음)
error_page <http, server, location, if> : 응답 코드에 대한 URI를 변환시키거나 응답 코드를 대체한다. (error_page 500 501 502 503 /server_error.html)
index <http, server, location> : 인덱스 파일을 정의한다.
클라이언트 요청
keepalive_requests <http, server, location> : 하나의 keep-alive 접속을 통해 서비스되는 최대 요청 수 (default 100)
client_max_body_size <http, server, location> : 클라이언트 요청 바디의 최대 크기를 지정. (default 1m)
마임(mime) 타입
엔진엑스는 마임 타입 설정을 돕는 두 개의 특별한 지시어를 제공한다.
여기에 정의한 값에 따라 응답의 'content-type'헤더값이 설정된다. 기본 마임 값은 mime.types
파일로 별도로 둔다.
types <http, server, location>
'마임타입확장자 확장자' 형태로 정의할 수 있다.
types{
text/html html;
image/gif gif;
}
기본 설정에 http 블록을 보면 include mime.types;란 지시어가 있는데, 기본적으로 mime.types파일을 include하고 있다.
default_type <http, server, location> : 기본 마임 타입을 정의한다. (default text/plain)
한도와 규제
limit_except <location> : 특정 요청을 규제한다.
location /admin/ {
# 특정 메서드만 허용한다.
limit_except GET POST {
allow 192.168.1.0/24;
deny all;
}
}
모듈 변수
nginx에서 사용할 수 있는 변수가 몇가지 존재한다. 이것은 많으니 공식 홈페이지를 통해서 보는게 좋을 듯하다.
많이 쓰는 것을 나열하자면
요청 헤더
$http_host
$http_user_agent
$http_referer
$http_x_forwarded_for (클라이언트가 프록시 뒤에 있을 때 클라이언트의 실제 IP 주소)
$http_cookie
응답 헤더
$sent_http_content_type
$sent_http_content_length
$sent_http_last_modeified
$sent_http_...
엔진엑스 생성 변수
$remote_addr 클라이언트의 IP 주소
$server_addr 서버의 IP 주소
$server_name 요청을 처리하는 동안 사용되는 server_name 지시어의 값
$server_port 요청 데이터를 수신한 서버 소켓의 포트 번호
$server_protocol HTTP/1.0 또는 HTTP/1.2
'프로그래밍 노트 > 인프라' 카테고리의 다른 글
[nginx] Proxy 환경에서 client IP 얻기 (정확한 ip 얻기) (1) | 2020.09.02 |
---|---|
[nginx] HTTP관련 환경 설정_2 (0) | 2020.06.02 |
OpenSSL을 사용하여 ROOT CA 생성 및 SSL 인증서 발급하기_2 (0) | 2020.05.09 |
OpenSSL을 사용하여 ROOT CA 생성 및 SSL 인증서 발급하기_1 (0) | 2020.05.09 |
[nginx] 기본설정 살펴보기 (0) | 2020.04.28 |