RadarURL
Skip to content
조회 수 2400 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

Nginx, FastCGI

nginx, fastcgi

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://blog.naver.com/dudwo567890/130169637747

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
21 XpressEngine XE 1.5 캐시 사용으로 성능 극대화 JaeSoo 2012.05.08 4095
20 제로보드XE(Xpressengine) Anti-accessXE:기본설정 JaeSoo 2012.07.26 3932
19 Nginx 웹서버 성능분석 JaeSoo 2012.11.19 5935
18 강력한 웹서버 NGINX JaeSoo 2012.11.19 5124
17 NGINX 소개와 사용 현황 JaeSoo 2012.11.19 4893
16 Xpress engine nginx rewrite 설정, 짧은주소 (xpressengine) JaeSoo 2012.11.20 59403
15 Nginx 와 Apache 동시사용 설정 (영문) JaeSoo 2013.04.07 9044
14 Nginx HttpRewriteModule JaeSoo 2013.04.07 2820
13 nginx 에서 htaccess 사용하기 JaeSoo 2013.04.08 2969
12 NGINX서버를 통한 다운로드 링크 형성하기(POGOPLUG SERIES 4용) JaeSoo 2013.04.08 5465
11 nginx 재시작 배치파일 JaeSoo 2013.04.11 3267
10 아파치 2.4는 러시안 강호 NGINX를 넘을 수 있는가? JAESOO 2013.05.28 2840
9 Apache vs Nginx 성능을 밝혀라! JAESOO 2013.05.28 3696
8 Nginx 설치 (간략) JAESOO 2013.06.10 1725
7 Nginx에서 php 외에 추가로 여러 확장자를 처리 방법 JAESOO 2013.06.10 3044
6 Nginx SERverSETting JaeSoo 2014.04.07 1697
5 nginx 504 gateway time-out JaeSoo 2014.04.07 1581
4 Nginx Log에서 upstream timed out (110: Connection timed out) while reading response header from upstream JaeSoo 2014.04.07 1973
» Nginx, FastCGI 지시어 및 설명 (504 Gateway Time-out 관련 설정 등) JaeSoo 2014.04.09 2400
2 504 Gateway Time-out using Nginx JaeSoo 2014.04.09 1849
Board Pagination Prev 1 2 Next
/ 2

PageViews   Today : 149   Yesterday : 1,828   Total : 19,919,054  /  Counter Status   Today : 84   Yesterday : 655   Total : 1,454,701
Site Info   Member : 237  /  Total documents : 1,223   New documents : 0  /  Total comments : 24

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소