메뉴 건너뛰기

NGINX
2016.01.16 21:18

Nginx, FastCGI

조회 수 294 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

FastCGI모듈은 엔진엑스 기본 빌드에 포함되므로 컴파일때 수작업으로 설정할 필요는 없다. 다음 지시어들은 엔진엑스가 FastCGI어플리케이션에 요청을 넘겨주는 방법에 관한 환경을 설정한다. 엔진엑스 환경설정 폴더에 있는 fastcgi_params파일에는 대부분의 상황에서 유효한 지시어 값들이 정의돼 있음에 유의한다.

주요지시어

지시어

설명

fastcgi_pass

문맥:

location, if

위치를 명시해 요청이 FastCGI서버에 전달되게 지정한다.

>TCP 소켓일 때의 구문: fastcgi_pass hostname:port;

>유닉스도메인소켓일떄의 구문: fastcgi_pass unix:/path/to/fastcgi.socket;

>업스트림블록을 지정할수 있다: fastcgi_pass myblock;

사용 예:

fastcgi_pass localhost:9000;

fastcgi_pass 127.0.0.1:9000;

fastcgi_pass unix:/tmp/fastcgi.socket;

#업스트림 블록을 사용하는 경우

upstream fastcgi {

    server 127.0.0.1:9000;

    server 127.0.0.1:9001;

}

location ~* \.py$ {

    fastcgi_pass fastcgi;

}

fastcgi_param

문맥:

http, server, location

요청이 FastCGI에 전달되게 환경을 설정한다. 모든 FastCGI에 대해 두개의 매개변수 SCRIPT_FILENAME QUERY_STRING이 반드시 필요하다.

사용 예:

fastcgi_param SCRIPT_FILENAME /home/website.com/www$fastcgi_script_name;

fastcgi_param QUERY_STRING $qeury_string;

POST요청은 REQUEST_METHOD, CONTENT_TYPE, CONTENT_LENGTH매개변수를 추가로 요구한다.

fastcgi_param REQUEST_METHOD $request_method;

fastcgi_param CONTENT_TYPE $content_type;

fastcgi_param CONTENT_LENGTH $content_length;

엔진엑스 환경설정 폴더에 있는 fastcgi_params파일은 필요한 모든 매개변수 정의를 이미 포함하고 있다. , FastCGI환경설저에 대해 따로 지정해야 하는 SCRIPT_FILENAME매개변수만 제외돼 있다.

구문: fastcgi_param PARAM value;

fastcgi_pass_header

문맥:

http, server, location

FastCGI 서버로 넘겨주는 추가적인 헤더를 지정한다.

구문: fastcgi_pass_header headername;

사용 예:

fastcgi_pass_header Authorization;

fastcgi_hide_header

문맥:

http, server, location

FastCGI에게 숨겨야 하는 헤더를 지정한다.(Nginx가 전달하지 않는 헤더)

구문: fastcgi_hide_header headername;

사용 예:

fastcgi_hide_header X-Forwarded-For;

fastcgi_ignore_client_abort

문맥:

http, server, location

이 지시어는 클라이언트가 웹 서버로 보낸 요청을 중단시킬 때의 처리방법을 정의한다. 지시어가 on으로 설정되어 있으면 엔진엑스는 중단 요청을 무시하고 요청을 계속 처리해 마친다. off로 설정돼있으면 엔진엑스는 중단 요청을 무시하지 않는다. 요청처리를 즉각 중단하고 FastCGI서버와의 통신을 끝낸다.

구문: on | off

기본 값: off

fastcgi_intercept_errors

문맥:

http, server, location

Nginx Gateway로부터 회신된 에러를 처리할것인지, 아니면 에러페이지를 직접 클라이언트에게 보낼것인지를 정의한다.

(유의사항: 에러처리는 엔진엑스의 error_page지시어를 통해 수행된다.)

구문: on | off

기본 값: off

fastcgi_read_timeout

문맥:

http, server, location

FastCGI로부터의 응답제한시간을 정의한다. 이 시간이 초과되도 Nginx가 응답을 받지 못하면 504 Gateway Timeout HTTP에러를 리턴한다.

구문: 숫자 값()

기본 값: 60

fastcgi_connect_timeout

문맥:

http, server, location

백엔드 서버 접속 제한시간을 정의한다. 이 값은 읽기/보내기 제한 시간과는 다르다. Nginx가 이미 백엔드 서버에 접속된 상태면 fastcgi_connect_timeout은 적용할수 없다.

구문: 숫자 값()

기본 값: 60

fastcgi_send_timeout

문맥:

http, server, localtion

백엔드서버에 데이터를 보낼때의 제한시간이다. 이 제한시간은 전체 응답지연에 적용되는게 아니라 두개의 쓰기 작업사이에 적용된다.

구문: 숫자 값()

기본 값: 60

fastcgi_split_path_info

문맥:

location

http://website.com/page.php/param1/param2와 같은 형태의 URL일 때 특히 유용한 지시어다.

이 지시어는 지정한 정규표현식에 따라 경로 저보를 분할한다.

fastcgi_split_path_info ^(.+\.php)(.*) $;

이것은 두개의 변수에 영향을 준다.

>$fastcgi_script_name: 실제 실행되는 스크립트의 파일명(앞 예에서는 page.php)

>$fastcgi_path_info: 스크립트명 다음에 오는 URL부분(앞의 예에서는 /param1/param2/)

이 두변수는 이후의 매개변수 정의에서 사용될수 있다.

fastcgi_param SCRIPT_FILENAME /home/website.com/www$fastcgi_script_name;

fastcgi_param PATH_INFO $fastcgi_path_info;

구문: 정규표현식

fastcgi_store

문맥:

http, server, location

FastCGI어플리케이션으로부터의 응답을 저장 장치의 파일에 저장하는 간단한 캐시 저장소를 사용한다. 동일한 URI가 다시 요청될경우 요청을 FastCGI어플리케이션에 전달하는 대신 캐시저장소로부터 직접 읽어 문서를 서비스한다.

이 지시어는 캐시 저장소를 사용하거나 해제한다.

구문: on | off

fastcgi_store_access

문맥:

http, server, location

이 지시어는 캐시저장소의 사용으로 생성되는 파일에 적용할 접근권한을 정의한다.

구문: fastcgi_store_access [user:r|w|rw] [group:r|w|rw] [all:r|w|rw]

기본 값:fastcgi_store_access user:rw;

fastcgi_temp_path

문맥:

http, server, location

임시 파일이나 캐시저장파일의 경로를 설정한다.

구문: 파일경로

사용 예:

fastcgi_temp_path /tmp/nginx_fastcgi;

fastcgi_max_temp_file_size

문맥:

http, server, location

이 지시어값을 0으로 설정하면 FastCGI요청용 임시파일을 사용하지 않는다 그렇지 않으면 최대 임시파일크기를 의미한다.

구문: 크기 값

기본값: 1GB

사용 예:

fastcgi_max_temp_file_size 5m;

fastcgi_temp_file_write_size

문맥:

http, server, location

임시 파일을 저장장치에 저장할때 쓰기버퍼크기를 설정한다.

구문: 크기 값

기본값: 2*proxy_buffer_size

fastcgi_buffers

문맥:

http, server, location

FastCGI어플리케이션으로부터 응답데이터를 읽을때 사용할 버퍼의 수와 크기를 설정한다.

구문: fastcgi_buffers amount size;

기본값: 8버퍼, 각기 4K이거나 8K(플래폼에 따라 다름)

사용 예:

fastcgi_buffers 8 4k;

fastcgi_buffer_size

문맥:

http, server, location

FastCGI어플리케이션의 응답의 시작부분(보통은 간단한 헤더데이터를 포함)을 읽기 위한 버퍼크기를 설정한다.

구문: 크기 값

기본 값은 앞서 설명한 fastcgi_buffers지시어에 의해 정의된 버퍼한개의 크기이다.

사용 예:

fastcgi_buffer_size 4k;

fastcgi_send_lowat

문맥:

http, server, location

FreeBSD전용의 TCP소켓용 SO_SNDLOWAT플래그를 사용할수 있게 하는 옵션이다. 이 값은 출력작업용 버퍼에서의 최소 바이트수를 정의한다.

구문: 숫자 값(크기)

기본값: 0

fastcgi_pass_request_body

fastcgi_pass_request_headers

문맥:

http, server, location

각각 요청 바디와 추가적인 요청 헤더를 백엔드서버에 전달해야하는지 여부를 정의한다.

구문: on | off

기본값: on

fastcgi_ignore_headers

문맥:

http, server, location

백엔드 서버 응답에서 X-Accel_Redirect, X-Accel-Expires, Expires, Cache-Control의 네 가지 헤더를 엔진엑스가 처리하지 않게 한다.

구문: fastcgi_ingore_headers header1 [header2...];

fastcgi_next_upstream

문맥:

http, server, location

fastcgi_pass가 업스트림 블록에 접속될때 이 지시어는 요청을 포기하고 다음 업스트림서버로 보내야하는 경우를 정의한다. 이 지시어의 값은 다음을 조합해 사용한다.

>error: 서버와 통신하고 있는 중이거나 통신을 시도하려고 할때 에러가 발생한다.

>timeout: 전송이나 접속시도를 하는동안 제한시간이 초과된 경우

>invalid_header: 백엔드서버가 빈 응답이나 유효하지 않은 응답을 회신한 경우

>http_500, http_502, http_503, http_504, http_404: 이런 HTTP에러가 발생한 경우 Nginx는 다음 업스트림으로 전환한다.

>off: 다음 업스트림서버의 사용을 금지한다.

사용 예:

fastcgi_next_upstream error timeout http_504;

fastcgi_next_upstream timeout invalid_header;

fastcgi_catch_stderr

문맥:

http, server, location

stderr(표준 에러 스트림)로 출력되는 에러메시지의 일부를 중간에 가로채 Nginx에러로그에 저장한다.

구문: fastcgi_catch_stderr filter;

사용 예:

fastcgi_catch_stderr "PHP Fatal error:";

 

FastCGI캐싱

일단 Nginx FastCGI어플리케이션과 잘 연동되게 정확한 환경설정을 했다면 다음 지시어들을 선택적으로 사용해 캐시시스템을 구성함으로서 서버의 전체적인 성능을 개선할수 있다.

지시어

설명

fastcgi_cache

문맥:

http, server, location

캐시 존(zone)을 정의한다. 준에 부여한 실벽자는 이후의 지시어에서 재사용된다.

구문: fastcgi_cache zonename;

사용 예:

fastcgi_cache cache1;

fastcgi_cache_key

문맥:

http, server, location

이 지시어는 캐시 항목들을 서로 구분하는 캐시 키(key)를 정의한다. 캐시 키가 $uri로 설정돼 있으면 $uri가 같은 모든 요청은 같은 캐시 항목에 대응된다. 대부분 동적웹사이트에서는 그정도로는 충분하지 않으므로 /index.php /index.php?page=contact가 같은 캐시 항목을 가리키지 않게 캐시 키에 질의문자열 인자를 포함할 필요가 있다.

구문: fastcgi_cache_key key;

사용 예:

fastcgi_cache_key "$scheme$host$request_uri$cookie_user";

fastcgi_cache_methods

문맥:

http, server, location

캐싱을 적용할 HTTP메소드를 정의한다. GET HEAD는 기본으로 포함되며 캐싱을 해제할수 없다. 예를 들면 POST같은 요청을 캐싱하게 설정할수 있다.

구문: fastcgi_cache_methods METHOD;

사용 예:

fastcgi_cache_methods POST;

fastcgi_cache_min_uses

문맥:

http, server, location

요청을 캐싱하는데 필요한 최소 히트수를 정의한다. 기본으로 요청 응답은 한번의 히트후에 캐시된다.(같은 캐시 키를 갖는 이후의 요청은 캐시된 응답으로 수신된다.)

구문: 숫자 값

사용 예:

fastcgi_cache_min_uses 1;

fastcgi_cache_path

문맥:

http, server, location

캐시된 파일과 매개변수를 저장하기 위한 디렉토리를 지정한다.

구문: fastcgi_cache_path path [levels=numbers keys_zone=name:size inactive=time max_size=size];

다음과 같은 매개변수를 추가할수 있다.

>levels: 하위 디렉토리의 깊이를 나타낸다(보통은 1:2면 충분하다)

>keys_zone: 앞서 fastcgi_cache지시어로 선언한 존을 이용할수 있게 하며, 차지하는 메모리의 크기를 나타낸다.

>inactive: 캐시된 응답이 지정한 시간만큼 사용되지 않으면 캐시로부터 제거된다.

>max_size: 전체 캐시의 최대 크기를 정의한다.

사용 예:

fastcgi_cache_path /tmp/nginx_cahce levels=1:2 zone=zone1:10m inactive=10m max_size=200M;

fastcgi_cache_use_stale

문맥:

http, server, location

Nginx Gateway와 관련한 특정 상황에서 오래된 캐시데이터를 사용할지 여부를 정의한다. fastcgi_cache_use_stale timeout을 사용하고 Gateway가 제한시간을 초과하면 Nginx는 캐시된 데이터로 서비스한다.

구문: fastcgi_cache_use_stale [updating] [errors] [timeout] [invalid_header] [http_500];

사용 예:

fastcgi_cache_use_stale error timeout;

fastcgi_cache_valid

문맥:

http, server, location

이 지시어는 여러 종류의 응답코드에 대해 각 캐시시간을 정한다 404에러코드와 연관된 응답은 1분동안 캐시하고 반대로 200 OK 응답은 10분 이상 캐시하게 할수 있다. 이 지시어는 한번 이상 사용할수도 있다.

fastcgi_cache_valid 404 1m;

fastcgi_cache_valid 500 502 504 5m;

fastcgi_cache_valid 200 10;

구문: fastcgi_cache_valid code1 [code2...] time;

 

참조

Nginx HTTP Server[한국어판](끌레망 네델꾸 지음|김득권 옮김)


출처 - http://m.blog.naver.com/dudwo567890/130169637747


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
25 NGINX nginx location 설정 맨하탄노숙자 2016.02.18 143
24 NGINX nginx 파일 공유 및 암호 설정하기 맨하탄노숙자 2016.02.18 296
23 NGINX nginx에서 동영상 스트리밍 서비스하기 맨하탄노숙자 2016.02.18 99
22 NGINX Nginx Tuning For Best Performance 맨하탄노숙자 2016.02.10 54
21 NGINX NGINX Load Balancing – TCP Load Balancer 맨하탄노숙자 2016.01.28 138
20 NGINX Build ngx_pagespeed From Source 맨하탄노숙자 2016.01.19 34
» NGINX Nginx, FastCGI 맨하탄노숙자 2016.01.16 294
18 NGINX Nginx 설정 예제 (nginx.conf) 맨하탄노숙자 2016.01.16 225
17 NGINX Nginx의 오픈 파일 캐시 맨하탄노숙자 2016.01.16 155
16 NGINX Nginx 의 Proxy cache 대리 캐시 및 부하 균형 똑바로 맨하탄노숙자 2016.01.16 209
15 NGINX nginx Proxy Cache 맨하탄노숙자 2016.01.16 46
14 NGINX 우분투 NGINX(엔진엑스) Configure 옵션 맨하탄노숙자 2016.01.16 163
13 NGINX 502 Bad Gateway 해결법 맨하탄노숙자 2016.01.16 512
12 NGINX Response Headers에 서버정보 숨기기 맨하탄노숙자 2016.01.16 66
11 NGINX Geo module 이용한 아이피별 분류 처리 맨하탄노숙자 2016.01.16 25
10 NGINX sub_filter 이용한 HTML 내에 태그값 변경 맨하탄노숙자 2016.01.16 39
9 NGINX Nginx Cache(캐쉬) 설정관련 참고 맨하탄노숙자 2016.01.16 52
8 NGINX Tools: ngxtop - real-time metrics for nginx server (and others) 맨하탄노숙자 2016.01.11 35
7 NGINX ngxtop python 맨하탄노숙자 2016.01.11 13
6 NGINX <PYTHON>[pip 설치] 맨하탄노숙자 2016.01.11 114
Board Pagination Prev 1 ... 2 Next
/ 2