프로그래밍 노트/인프라

[nginx] HTTP관련 환경 설정_1

깡냉쓰 2020. 6. 2. 22:06
728x90
반응형

HTTP 코어 모듈

HTTP서버의 핵심적인 블록, 지시어, 변수를 포함한다.

블럭

HTTP 모듈은 아래와 같은 세 가지 논리적 블록을 제공한다.
프로토콜 수준(http 블록), 서버 수준(server 블록), 요청 URI 수준(location)
http : 엔진엑스의 HTTP 부문과 관련된 모듈의 지시어와 블록을 정의
server : 하나의 호스트를 선언하는데 사용하며, http 블럭 안에서만 사용할 수 있다. (하나의 웹사이트라고 생각)
location : 웹사이트의 특정 위치에 적용할 설정 그룹을 정의한다. server블록이나 다른 location 블록 안에 삽입할 수 있다.

http,server 블럭

모듈 지시어

표현 방법 : 지시어 <문맥(사용할 수 있는 블록)>

소켓과 호스트 환경

listen <server> : 웹 사이트용 리스닝 소켓이 사용하는 IP 주소와 포트를 설정
server_name <server> : server블록은 한 개 이상의 호스트명을 지정한다. HTTP 요청 헤더의 HOST값으로 판단한다.

server

경로와 문서

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

참고) https://ohgyun.com/480

728x90
반응형