본문으로 바로가기

NGINX를 컴파일할때 추가/제거 할 수 있는 모듈들을 살펴봅니다.

Configure 경로 설정

경로 설정에 사용되는 스위치의 전체 목록

스위치 사용법 기본 값
--prefix=... 엔진엑스가 설치되는 기본 폴더 /usr/local/nginx
유의사항: 다른 스위치의 설정에 사용된 모든 상대 경로는 기본 폴더 밑에 연결된다.
--sbin-path=... 엔진엑스 바이너리 파일이 설치되는 경로 <prefix>/sbin/nginx
--conf-path=... 주 환경 설정 파일의 경로 <prefix>/conf/nginx.conf
--error-log-path=... 에러 로그 파일의 위치. 에러 로그 경로는 환경 설정 파일안에서 구체적으로 설정할 수도 있다. 이 경로는 환경 설정 파일에서 아무런 에러 로그 지시어를 사용하지 않았을 경우에만 적용된다. <prefix>/logs/error.log
--pid-path=... 엔진엑스 pid 파일의 경로. pid 파일 경로는 환경 설정 파일안에서 지정할 수도 있지만 그렇지 않으면 이 스위치에서 지정한 값이 사용된다. <prefix>/logs/nginx.pid
유의사항: pid 파일은 프로세스 식별자를 포함하는 단순한 텍스트 파일이다. 다른 애플리케이션들이 현재 실행중인 프로그램의 pid 파일은 잘 알려진 곳에 위치한다.
--lock-path=... 잠금 파일의 경로. 환경 설정 파일에서 지정하지 않으면 이 스위치에서 지정한 값이 사용된다. <prefix>/logs/nginx.lock
유의사항: 잠금 파일은 다른 애플리케이션들이 프로그램의 실행 여부를 판단하는데 사용한다. 엔진엑스의 경우는 프로세스가 두 번 시작되지 않게 보장하는데 사용한다.
--with-perl_modules_path=... 펄 모듈의 경로를 정의한다. 펄 모듈을 추가하려면 반드시 이 스위치를 정의해야 한다.  
--with-perl=... 펄 바이너리 파일 경로. 펄 스크립트를 실행할 때 사용된다. 펄 스크립트의 실행을 허용하려면 반드시 이 경로가 설정돼야 한다.  
--http-log-path=... 접근 로그의 위치를 정의한다. 이 경로는 환경 설정 파일에서 접근 로그 지시어를 사용하지 않았을 때만 적용된다. <prefix>/logs/access.log
--http-client-body-temp-path=... 클라이언트 요청에 의한 임시 파일의 저장에 사용되는 디렉토리 <prefix>/client_body_temp
--http-proxy-temp-path=... 프록시가 사용하는 임시 파일의 위치 <prefix>/proxy_temp
--http-fastcgi-temp-path=... HTTP FastCGI 모듈이 사용하는 임시 파일의 위치 <prefix>/fastcgi_temp
--builddir=... 애플리케이션 빌드 위치  

엔진엑스의 경로는 기본폴더만 /usr/local/nginx로 잡아주면 그 하위에 모든 파일들이 설치된다.

소스 컴파일 설치시와 apt-get 설치시의 경로가 달라 헷갈릴수 있는데 소스 컴파일시 경로를 맞춰주면 좀 덜하다.


컴파일 시 경로 맞추기 예)

$ ./configure \

--prefix=/usr/local/nginx \

--conf-path=/etc/nginx/nginx.conf \

--sbin-path=/usr/sbin \

--http-log-path=/var/log/nginx/access.log \

--error-log-path=/var/log/nginx/error.log \

--pid-path=/var/run/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--http-client-body-temp-path=/var/lib/nginx/body \

--http-proxy-temp-path=/var/lib/nginx/proxy \

--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp \

--http-uwsgi-temp-path=/var/tmp/nginx/fastcgi_temp \

--http-scgi-temp-path=/var/tmp/nginx/fastcgi_temp \

위처럼 컴파일시 경로를 맞춰줬을 경우에는 삭제하거나 새로 설치할때도 일일이 경로를 찾아가야 하는 수고가 필요하다.

선행 요소

선행 요소(의존성 패키지)는 라이브러리와 바이너리 형태로 제공된다. 간혹 이미 시스템에 설치되어 있다하더라도 환경 설정 스크립트가 선행 요소의 위치를 찾지 못하는 경우가 있다. 그 원인은 다양하지만 한 예로 표준 디렉토리가 아닌 곳에 설치하는 경우를 들 수 있다. 이런 문제를 해결하기 위해 다음과 같은 스위치를 사용해 선행 요소의 경로를 지정할 수 있다.

컴파일러 옵션
--with-cc=... C 컴파일러의 대체 위치를 지정한다.
--with-cpp=... C 전처리기(preprocessor)의 대체 위치를 지정한다.
--with-cc-opt=... C 컴파일러 커맨드라인에 들어가는 추가 옵션을 정의한다.
--with-ld=opt=... C 링커 커맨드라인에 들어가는 추가 옵션을 정의한다.
--with-cpu-opt=... 대상 프로세서 구조를 지정하며, 다음 값 중 하나를 선택한다. Pentium, pentiumpro, pentium3, pentium4, athlon, opteron, sparc32, sparc64, ppc64
PCRE 옵션
--without-pcre PCRE 라이브러리를 사용하지 않는다. 정규표현식 지원이 제거돼 재작성 모듈도 사용할 수 없게 되므로 이 설정은 권장하지 않는다.
--with-pcre PCRE 라이브러리를 사용하게 강제한다.
--with-pcre=... PCRE 라이브러리 소스코드의 경로를 지정한다.
--with-pcre-opt=... PCRE 라이브러리를 빌드할 때 사용되는 추가 옵션이다.
MD5 옵션
--with-md5=... MD5 라이브러리 소스의 경로를 지정한다.
--with-md5-opt=... MD5 라이브러리를 빌드할 때 사용되는 추가 옵션이다.
--with-md5-asm MD5 라이브러리용 어셈블러를 사용한다.
SHA1 옵션
--with-sha1=... SHA1 라이브러리 소스의 경로를 지정한다.
--with-sha1-opt=...  SHA1 라이브러리를 빌드할 때 사용되는 추가 옵션이다.
--with-sha1-asm SHA1 라이브러리용 어셈블러 소스를 사용한다.
zlib 옵션
--with-zlib=... zlib 라이브러리 소스의 경로를 지정한다.
--with-zlib-opt=... zlib 라이브러리를 빌드할 때 사용되는 추가 옵션이다.
--with-zlib-asm=... 다음의 대상 프로세서 구조에 대해 어셈블러 최적화 사용한다. pentium, pentiumpro
OpenSSL 옵션
--with-openssl=... OpenSSL 라이브러리 소스의 경로를 지정한다.
--with-openssl-opt=... OpenSSL 라이브러리를 빌드할 때 사용되는 추가 옵션이다.

기본 포함 모듈

아래는 컴파일시 자동으로 포함되는 모듈에 대한 설명이다.

컴파일시 --without-http_모듈명과 같은 방식으로 이를 제외할 수 있다.

모듈 이름 설명 비활성화 하는법
HTTP-Core

포트,locations, 에러페이지등의 웹서버 기본 설정 모듈

--without-http 

Access IP 주소에 기반한 Allow/Deny 접근 모듈 --without-http_access_module
Auth Basic 기본 HTTP 인증 모듈 --without-http_auth_basic_module
Auto Index 자동 색인(디렉토리,파일 리스팅) 모듈 --without-http_autoindex_module
Browser 사용자 에이전트 문자열을 해석하는 브라우저 모듈 --without-http_browser_module
Charset 웹페이지를 재인코딩하는 데 사용되는 문자세트 모듈 --without-http_charset_module
Empty GIF 메모리로부터 1X1 GIF 이미지를 서비스하는 Empty Gif 모듈 --without-http_empty_gif_module
FastCGI FastCGI 프로세스와 연동되는 FastCGI 모듈 --without-http_fastcgi_module
Geo IP 주소 범위에 따라 변수를 정의하는 지오 모듈 --without-http_geo_module
Gzip Gzip 압축 모듈 --without-http_gzip_module
Headers HTTP 응답 헤더를 설정할 수 있는 모듈 제외할 수 없음
Index index로 사용되는 파일들을 설정하는 모듈 제외할 수 없음
Limit Requests 사용자당 요청 수를 제한하는 Limit Requests 모듈 --without-http_limit_req_module
Limit Conn 정의된 지역에 따라 자원의 사용을 제한하는 Limit Zone 모듈 --without-http_limit_zone_module
Log access log를 설정하는 모듈 제외할 수 없음
Map map 블록을 선언할 수 있는 맵 모듈 --without-http_map_module
Memcached 메모리 캐시 데몬과 연동되는 Memcached 모듈 --without-http_memcached_module
Proxy 요청을 받아 다른 서버로 전달하는 프록시 모듈 --without-http_proxy_module
Referer 리퍼러 제어 모듈 --without-http_referer_module
Rewrite 재작성 모듈 --without-http_rewrite_module
SCGI SCGI 프로토콜 지원 모듈 --without-http_scgi_module
Split Client 조건에 따라 클라이언트를 분할 --without-http_split_clients_module
SSI 서버 측 인클루드(SSI) 모듈 --without-http_ssi_module
Upstream 부하 균형 구조를 만드는 업스트림 모듈 --without-http_upstream_ip_hash_module
User ID 쿠키를 통해 사용자 식별을 제공하는 사용자 ID 모듈 --without-http_userid_module
uWSGI uWSGI 프로토콜 지원 모듈 --without-http_uwsgi_module
X-Accel X-Sendfile-like 모듈 제외할수 없음

기본 제외 모듈

다음과 같은 스위치를 사용해 기본 제외 모듈을 포함시킬 수 있다.

모듈 이름 설명 활성화 하는 법
Addition 응답 바디 앞이나 뒤에 데이터를 추가하는 Addition 모듈 --with-http_addition_module
Auth Request 하위요청(subrequest)의 결과에 따라 클라이언트 인증을 구현하는 모듈
유의사항: 1.5.4 버전부터 지원
--with-http_auth_request_module
Degradation 메모리 부족상태에서 일부 지역에 대해 204 또는 444 코드를 변환하는 모듈 --with-http_degradation_module
Embedded Perl 엔진엑스 설정파일에서 펄을 사용 --with-http_perl_module
FLV flv 파일의 스트리밍을 다루는 FLV 모듈 --with-http_flv_module
GeoIP MaxMind 사의 GeoIP 바이너리 데이터베이스를 사용해 지리적 위치를 알아내는 GeoIP 모듈
유의사항: 이 모듈을 컴파일하려면 libgeoip 라이브러리를 설치해야 한다.
--with-http_geoip_module
Google Perftools 구글 성능 도구(perftools) 모듈을 포함 --with-http_perftools_module
Gzip Precompression 사전에 압축해 놓은 파일을 전송하는 Gzip Static 모듈을 포함한다. --with-http_gzip_static_module
Gunzip 즉석에서 gzip으로 압축된 응답을 압축해제하는 모듈 --with-http_gunzip_module
Image Filter GD라이브러리를 이용해 이미지를 조정하는 이미지 필터 모듈
유의사항: libgd 라이브러리가 필요하다.
--with-http_image_filter_module
MP4 mp4 스트리밍 기능과 seeking 기능을 활성화하는 모듈 --with-http_mp4_module
Random Index 디렉토리 색인으로 무작위 파일을 사용하는 무작위 색인 모듈을 포함한다. --with-http_random_index_module
Real IP 요청 헤데 데이터로부터 실제 IP 주소를 읽어 내는 Real IP 모듈 --with-http_realip_module
Secure Link 사용자가 자원에 접근하기전에 url에 특정 해쉬가 포함돼 있는지를 검사하여 기본적인 보호체계를 제공 --with-http_secure_link_module
SSL HTTPS를 사용해 페이지를 서비스하는 SSL 모듈 --with-http_ssl_module
Stub Status 서버 통계와 정보 페이지를 생성하는 스터브 상태(stub status) --with-http_stub_status_module
Substitution 웹페이지 안의 텍스트를 다른 내용으로 대체하는 치환(Substitution) 모듈 --with-http_sub_module
WebDAV WebDAV(웹 기반 분산 저작과 버전 관리) 모듈을 포함 --with-http_dav_module
XSLT XML 문서에 XSL 변환을 적용하는 XSLT 모듈
유의사항: 이 모듈을 컴파일 하려면 libxml2와 libxslt 라이브러리를 설치해야 한다.
--with-http_xslt_module

기타 옵션

메일 서버 프록시 기능이나 이벤트 관리와 같은 다른 옵션들은 환경 설정 스크립트안에서 지정할 수 있다.

메일 서버 프록시 옵션
--with-mail 메일 서버 프록시 모듈을 포함한다. POP3, IMAP4, SMTP를 지원한다. 기본 빌드에는 포함되지 않는다.
--with-mail_ssl_module 메일 서버 프록시용 SSL 지원 모듈을 포함한다. 기본 빌드에는 포함되지 않는다.
--without-mail_pop3_module 메일 서버 프록시용 POP3 모듈을 제외한다. 메일 서버 프록시 모듈이 사용되면 기본으로 이 모듈도 포함된다.
--without-mail_imap_module 메일 서버 프록시용 IMAP4 모듈을 제외한다. 메일 서버 프록시 모듈이 사용되면 기본으로 이 모듈도 포함된다.
--without-mail_smtp_module

메일 서버 프록시용 SMTP 모듈을 제외한다.
메일 서버 프록시 모듈이 사용되면 기본으로 이 모듈도 포함된다. 

이벤트 관리
엔진엑스 시퀀서(sequencer)용 이벤트 알림 시스템을 선택한다(고급 사용자용).
--with-rtsig_module rtsig를 사용해 이벤트를 알리는 rtsig 모듈을 포함한다.
--with-select-module select를 사용해 이벤트를 알리는 select 모듈을 포함한다. kqueue, epoll, rtsig, poll 같이 select보다 더 나은 모듈이 발견되지 않으면 이 모듈을 기본으로 포함한다.
--without-select_module select 모듈을 제외한다.
--with-poll_module poll을 사용해서 이벤트를 알리는 poll 모듈을 포함한다. kqueue, epoll, rtsig 같이 poll보다 더 나은 모듈이 발견되지 않으면 이 모듈을 기본으로 포함한다.
--without-poll_module poll 모듈을 제외한다.
사용자와 그룹 옵션
--user=... 엔진엑스 작업자 프로세스(worker process)를 실행하기 위한 기본 사용자 계정. 이 설정은 환경 설정 파일에 user 지시어를 생략했을 경우에만 적용된다.
--group=... 엔진엑스 작업자 프로세스를 실행하기 위한 기본 사용자 그룹. 이 설정은 환경 설정 파일에 group 지시어를 생략했을 경우에만 적용된다.
기타 옵션
--with-ipv6 IPv6 지원을 사용한다.
--without-http-cache HTTP 캐쉬 기능을 사용하지 않는다.
--add-module=PATH 경로를 지정해 컴파일 과정에 서드파티 모듈을 추가한다. 이 스위치는 다수의 모듈을 컴파일하기 위해 무한 반복될 수 있다.
--with-debug 추가적인 디버깅 정보를 기록한다.