source에서 nginx 빌드

빌드는 configure 명령을 사용해서 구성합니다. nginx가 연결 처리에 사용하는 메서드를 포함해서 시스템의 다양한 측면을 정의합니다. 최종적으로는 Makefile을 생성합니다.

configure 명령은 다음의 매개변수를 지원합니다.

--help

도움말 메시지를 출력합니다.

--prefix=path

서버 파일을 저장할 디렉터리를 정의합니다. 이 디렉터리는 configure(라이브러리 소스로 연결되는 경로 제외)와 nginx.conf 구성 파일에서 설정한 모든 관련 경로에도 사용합니다. 기본적으로 /usr/local/nginx 디렉터리로 설정됩니다.

--sbin-path=path

nginx 실행 가능 파일의 이름으로 설정됩니다. 이 이름은 설치 중에만 사용합니다. 기본적으로 파일 이름은 prefix/sbin/nginx로 지정됩니다.

--modules-path=path

nginx 동적 모듈을 설치할 디렉터리를 정의합니다. 기본적으로 prefix/modules 디렉터리를 사용합니다.

--conf-path=path

nginx.conf 구성 파일의 이름을 설정합니다. 필요한 경우, nginx는 언제든 다른 구성 파일로 시작할 수 있습니다. 명령줄 매개변수 -c file에서 지정하면 됩니다. 기본적으로 파일 이름은 prefix/conf/nginx.conf로 지정됩니다.

--error-log-path=path

기본 오류, 경고, 진단 파일의 이름을 설정합니다. 설치 후에는 error_log 명령을 사용하여 언제든 파일 이름을 nginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 파일 이름은 prefix/logs/error.log로 지정됩니다.

--pid-path=path

메인 프로세스의 프로세스 ID를 저장할 nginx.pid 파일의 이름을 설정합니다. 설치 후에는 pid 명령을 사용하여 언제든 파일 이름을 nginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 파일 이름은 prefix/logs/nginx.pid로 지정됩니다.

--lock-path=path

잠금 파일 이름의 접두사를 설정합니다. 설치 후에는 lock_file 명령을 사용하여 언제든 값을 ginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 값은 prefix/logs/nginx.lock입니다.

--user=name

작업자 프로세스에서 자격 증명을 사용할 권한이 없는 사용자의 이름을 설정합니다. 설치 후에는 user 명령을 사용하여 언제든 이름을 nginx.conf 구성 파일에서 설정할 수 있습니다. 기본 사용자 이름은 nobody입니다.

--group=name

작업자 프로세스가 자격 증명을 사용할 그룹 이름을 설정합니다. 설치 후에는 user 명령을 사용하여 언제든 이름을 nginx.conf 구성 파일에서 설정할 수 있습니다. 기본적으로 그룹 이름은 권한이 없는 사용자의 이름으로 설정됩니다.

--build=name

선택적 nginx 빌드 이름을 설정합니다.

--builddir=path

빌드 디렉터리를 설정합니다.

--with-select_module
--without-select_module

서버가 select() 메서드와 작동하도록 하는 모듈 구축을 활성화하거나 비활성화합니다. 플랫폼이 더욱 적절한 메서드(예: kqueue, epoll, /dev/poll)를 지원하지 않는 듯할 경우, 이 모듈이 자동으로 구축됩니다.

--with-poll_module
--without-poll_module

서버가 poll() 메서드와 작동하도록 하는 모듈 구축을 활성화하거나 비활성화합니다. 플랫폼이 더욱 적절한 메서드(예: kqueue, epoll, /dev/poll)를 지원하지 않는 듯할 경우, 이 모듈이 자동으로 구축됩니다.

--with-threads

스레드 풀 사용을 활성화합니다.

--with-file-aio

FreeBSD와 Linux에서 비동기식 파일 I/O(AIO) 사용을 활성화합니다.

--with-http_ssl_module

HTTPS 프로토콜 지원을 HTTP 서버로 추가하는 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다. 이 모듈을 구축하고 실행하려면 OpenSSL 라이브러리가 필요합니다.

--with-http_v2_module

HTTP/2에 대한 지원을 제공하는 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_realip_module

지정된 헤더 파일로 전송된 주소로 클라이언트 주소를 변경하는 ngx_http_realip_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_addition_module

응답 전/후에 텍스트를 추가하는 ngx_http_addition_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_xslt_module
--with-http_xslt_module=dynamic

하나 이상의 XSLT 스타일시트를 사용하여 XML 응답을 변환하는 ngx_http_xslt_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다. 이 모듈을 실행하려면 libxml2libxslt 라이브러리가 필요합니다.

--with-http_image_filter_module
--with_http_image_filter_module=dynamic

이미지를 JPEG, GIF, PNG, WebP 형식으로 변환하는 ngx_http_image_filter_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_geoip_module
--with-http_geoip_module=dynamic

클라이언트 IP 주소와 사전 컴파일된 MaxMind 데이터베이스에 따라 변수를 생성하는 ngx_http_geoip_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_sub_module

지정된 문자열을 다른 문자열로 교체하여 응답을 수정하는 ngx_http_sub_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_dav_module

WebDAV 프로토콜을 통해 파일 관리 자동화를 제공하는 ngx_http_dav_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_flv_module

Flash Video(FLV) 파일에 대한 가상 스트리밍 서버측 지원을 제공하는 ngx_http_flv_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_mp4_module

MP4 파일에 대한 가상 스트리밍 서버측 지원을 제공하는 ngx_http_mp4_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_gunzip_module

“gzip” 인코딩 메서드를 지원하지 않는 “Content-Encoding: gzip”으로 응답의 압축을 해제하는 ngx_http_gunzip_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_gzip_static_module

일반 파일 대신 “.gz” 파일 이름 확장자로 사전 압축된 파일을 전송하는 ngx_http_gzip_static_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_auth_request_module

하위 요청 결과에 따라 클라이언트 인증을 구현하는 ngx_http_auth_request_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_random_index_module

슬래시 문자(‘/’)로 끝나는 요청을 처리하고 디렉터리에서 인덱스 파일 역할을 할 무작위 파일을 선택하는 ngx_http_random_index_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_secure_link_module

ngx_http_secure_link_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_degradation_module

ngx_http_degradation_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_slice_module

요청을 하위 요청으로 분할하고 각각 특정 범위의 응답을 반환하는 ngx_http_slice_module 모듈 구축을 활성화합니다. 이 모듈은 용량이 큰 응답을 더욱 효과적으로 캐싱합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-http_stub_status_module

기본 상태 정보에 액세스를 제공하는 ngx_http_stub_status_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--without-http_charset_module

“Content-Type” 응답 헤더 필드에 지정된 문자 세트를 추가하고 하나의 문자 세트에서 다른 문자 세트로 데이터를 변환하기도 하는 ngx_http_charset_module 메서드 구축을 비활성화합니다.

--without-http_gzip_module

HTTP 서버의 응답을 압축하는 모듈 구축을 비활성화합니다. 이 모듈을 구축, 실행하려면 zlib 라이브러리가 필요합니다.

--without-http_ssi_module

통과하는 응답에서 SSI(Server Side Includes) 명령을 처리하는 ngx_http_ssi_module 모듈 구축을 비활성화합니다.

--without-http_userid_module

클라이언트 식별에 적절한 쿠키를 설정하는 ngx_http_userid_module 모듈 구축을 비활성화합니다.

--without-http_access_module

특정 클라이언트 주소로의 액세스를 제한하는 ngx_http_access_module 모듈 구축을 비활성화합니다.

--without-http_auth_basic_module

“HTTP 기본 인증” 프로토콜을 사용하여 사용자 이름과 비밀번호를 검증함으로써 리소스에 대한 액세스를 제한하는 ngx_http_auth_basic_module 모듈 구축을 비활성화합니다.

--without-http_mirror_module

백그라운드 미러 하위 요청을 생성하여 원본 요청의 미러링을 구현하는 ngx_http_mirror_module 모듈 구축을 비활성화합니다.

--without-http_autoindex_module

ngx_http_index_module 모듈이 인덱스 파일을 찾지 못하는 경우, 슬래시 문자(‘/’)로 끝나는 요청을 처리하고 디렉터리 목록을 생성하는 ngx_http_autoindex_module 모듈 구축을 비활성화합니다.

--without-http_geo_module

클라이언트 IP 주소에 따라 값으로 변수를 생성하는 ngx_http_geo_module 모듈 구축을 비활성화합니다.

--without-http_map_module

다른 변수의 값에 따라 값으로 변수를 생성하는 ngx_http_map_module 모듈 구축을 비활성화합니다.

--without-http_split_clients_module

A/B 테스트를 위한 변수를 생성하는 ngx_http_split_clients_module 모듈 구축을 비활성화합니다.

--without-http_referer_module

“Referer” 헤더 필드에서 잘못된 값이 포함된 요청에 대한 사이트 액세스를 차단하는 ngx_http_referer_module 모듈 구축을 비활성화합니다.

--without-http_rewrite_module

HTTP 서버가 요청을 리디렉션하고 요청 URI를 변경하는 모듈 구축을 비활성화합니다. 이 모듈을 구축, 실행하려면 PCRE 라이브러리가 필요합니다.

--without-http_proxy_module

HTTP 서버 프록시 모듈 구축을 비활성화합니다.

--without-http_fastcgi_module

FastCGI 서버로 요청을 전달하는 ngx_http_fastcgi_module 모듈 구축을 비활성화합니다.

--without-http_uwsgi_module

uwsgi 서버로 요청을 전달하는 ngx_http_uwsgi_module 모듈 구축을 비활성화합니다.

--without-http_scgi_module

SCGI 서버로 요청을 전달하는 ngx_http_scgi_module 모듈 구축을 비활성화합니다.

--without-http_grpc_module

gRPC 서버로 요청을 전달하는 ngx_http_grpc_module 모듈 구축을 비활성화합니다.

--without-http_memcached_module

memcached 서버에서 응답을 얻는 ngx_http_memcached_module 모듈 구축을 비활성화합니다.

--without-http_limit_conn_module

키당 연결 수(예: IP 주소 1개의 연결 수)를 제한하는 ngx_http_limit_conn_module 모듈 구축을 비활성화합니다.

--without-http_limit_req_module

키당 요청 처리 속도(예: IP 주소 1개에서 수신되는 요청의 처리 속도)를 제한하는 ngx_http_limit_req_module 모듈 구축을 비활성화합니다.

--without-http_empty_gif_module

단일 픽셀 투명 GIF를 전송하는 모듈 구축을 비활성화합니다.

--without-http_browser_module

“User-Agent” 요청 헤더 필드의 값에 따라 값이 달라지는 변수를 생성하는 ngx_http_browser_module 모듈 구축을 비활성화합니다.

--without-http_upstream_hash_module

hash 부하 분산 메서드를 구현하는 모듈 구축을 비활성화합니다.

--without-http_upstream_ip_hash_module

ip_hash 부하 분산 메서드를 구현하는 모듈 구축을 비활성화합니다.

--without-http_upstream_least_conn_module

least_conn 부하 분산 메서드를 구현하는 모듈 구축을 비활성화합니다.

--without-http_upstream_random_module

random 부하 분산 메서드를 구현하는 모듈 구축을 비활성화합니다.

--without-http_upstream_keepalive_module

업스트림 서버로 연결 캐싱을 제공하는 모듈 구축을 비활성화합니다.

--wihtout-http_upstream_zone_module

공유된 메모리 영역에서 업스트림 그룹의 런타임 상태를 저장할 수 있는 모듈 구축을 비활성화합니다.

--with-http_perl_module
--with-http_perl_module=dynamic

임베디드 Perl 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-perl_modules_path=path

Perl 모듈을 저장하는 디렉터리를 정의합니다.

--with-perl=path

Perl 바이너리의 이름을 설정합니다.

--http-log-path=path

HTTP 서버의 기본 요청 로그 파일의 이름을 설정합니다. 설치 후에는 access_log 명령을 사용하여 언제든 파일 이름을 nginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 파일 이름은 prefix/logs/access.log로 지정됩니다.

--http-client-body-temp-path=path

클라이언트 요청 본문이 있는 임시 파일을 저장하는 디렉터리를 정의합니다. 설치 후에는 client_body_temp_path 명령을 사용하여 언제든 디렉터리를 nginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 디렉터리 이름은 prefix/client_body_temp로 지정됩니다.

--http-proxy-temp-path=path

프록시된 서버에서 수신한 데이터로 임시 파일을 저장하는 디렉터리를 정의합니다. 설치 후에는 proxy_temp_path 명령을 사용하여 언제든 디렉터리를 nginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 디렉터리 이름은 prefix/proxy_temp로 지정됩니다.

--http-fastcgi-temp-path=path

FastCGI 서버에서 수신한 데이터로 임시 파일을 저장하는 디렉터리를 정의합니다. 설치 후에는 fastcgi_temp_path 명령을 사용하여 언제든 디렉터리를 nginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 디렉터리 이름은 prefix/fastcgi_temp로 지정됩니다.

--http-uwsgi-temp-path=path

uwsgi 서버에서 수신한 데이터로 임시 파일을 저장하는 디렉터리를 정의합니다. 설치 후에는 uwsgi_temp_path 명령을 사용하여 언제든 디렉터리를 nginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 디렉터리 이름은 prefix/uwsgi_temp로 지정됩니다.

--http-scgi-temp-path=path

SCGI 서버에서 수신한 데이터로 임시 파일을 저장하는 디렉터리를 정의합니다. 설치 후에는 scgi_temp_path 명령을 사용하여 언제든 디렉터리를 nginx.conf 구성 파일에서 변경할 수 있습니다. 기본적으로 디렉터리 이름은 prefix/scgi_temp로 지정됩니다.

--without-http

HTTP 서버를 비활성화합니다.

--without-http-cache

HTTP 캐시를 비활성화합니다.

--with-mail
--with-mail=dynamic

POP3/IMAP4/SMTP 메일 프록시 서버를 활성화합니다.

--with-mail_ssl_module

SSL/TLS 프로토콜 지원을 메일 프록시 서버에 추가하는 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다. 이 모듈을 구축하고 실행하려면 OpenSSL 라이브러리가 필요합니다.

--without-mail_pop3_module

메일 프록시 서버에서 POP3 프로토콜을 비활성화합니다.

--without-mail_imap_module

메일 프록시 서버에서 IMAP 프로토콜을 비활성화합니다.

--without-mail_smtp_module

메일 프록시 서버에서 SMTP 프로토콜을 비활성화합니다.

--with-stream
--with-stream=dynamic

일반 TCP/UDP 프록시 및 부하 분산에 대해 스트림 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-stream_ssl_module

SSL/TLS 프로토콜 지원을 스트림 모듈에 추가하는 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다. 이 모듈을 구축하고 실행하려면 OpenSSL 라이브러리가 필요합니다.

--with-stream_realip_module

PROXY 프로토콜 헤더에서 전송된 주소로 클라이언트 주소를 변경하는 ngx_stream_realip_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-stream_geoip_module
--with-stream_geoip_module=dynamic

클라이언트 IP 주소와 사전 컴파일된 MaxMind 데이터베이스에 따라 변수를 생성하는 ngx_stream_geoip_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--with-stream_ssl_preread_module

SSL/TLS를 종료하지 않고 ClientHello 메시지에서 정보를 추출할 수 있는 ngx_stream_ssl_preread_module 모듈 구축을 활성화합니다. 이 모듈은 기본적으로 구축되지 않습니다.

--without-stream_limit_conn_module

키당 연결 수(예: IP 주소 1개의 연결 수)를 제한하는 ngx_stream_limit_conn_module 모듈 구축을 비활성화합니다.

--without-stream_access_module

특정 클라이언트 주소로의 액세스를 제한하는 ngx_stream_access_module 모듈 구축을 비활성화합니다.

--without-stream_geo_module

클라이언트 IP 주소에 따라 값으로 변수를 생성하는 ngx_stream_geo_module 모듈 구축을 비활성화합니다.

--without-stream_map_module

다른 변수의 값에 따라 값으로 변수를 생성하는 ngx_stream_map_module 모듈 구축을 비활성화합니다.

--without-stream-split_clients_module

A/B 테스트를 위한 변수를 생성하는 ngx_stream_split_clients_module 모듈 구축을 비활성화합니다.

--without-stream_return_module

일부 지정된 값을 클라이언트로 보낸 다음, 연결을 종료하는 ngx_stream_return_module 모듈 구축을 비활성화합니다.

--without-stream_set_module

변수에 대한 값을 설정하는 ngx_stream_set_module 모듈 구축을 비활성화합니다.

--without-stream_upstream_hash_module

hash 부하 분산 메서드를 구현하는 모듈 구축을 비활성화합니다.

--without-stream_upstream_least_conn_module

least_conn 부하 분산 메서드를 구현하는 모듈 구축을 비활성화합니다.

--without-stream_upstream_random_module

random 부하 분산 메서드를 구현하는 모듈 구축을 비활성화합니다.

--without-stream_upstream_zone_module

공유된 메모리 영역에서 업스트림 그룹의 런타임 상태를 저장할 수 있는 모듈 구축을 비활성화합니다.

--with-google_perftools_module

Google Performance Tools를 사용하여 nginx 작업자 프로세스의 프로파일링을 활성화하는 ngx_google_perftools_module 모듈 구축을 활성화합니다. 이 모듈은 nginx 개발자에게 제공되며, 기본적으로 구축되지 않습니다.

--with-cpp_test_module

ngx_cpp_test_module 모듈 구축을 활성화합니다.

--add-module=path

외부 모듈을 활성화합니다.

--add-dynamic-module=path

외부 동적 모듈을 활성화합니다.

--with-compat

동적 모듈 호환성을 활성화합니다.

--with-cc=path

C 컴파일러의 이름을 설정합니다.

--with-cpp=path

C 프리프로세서의 이름을 설정합니다.

--with-cc-opt=parameters

CFLAGS 변수에 추가할 추가 매개변수를 설정합니다. FreeBSD에서 시스템 PCRE 라이브러리를 사용할 때 –with-cc-opt=”-I /usr/local/include”를 지정해야 합니다. select()에서 지원하는 파일 수를 늘려야 할 경우, 여기에서 다음과 같이 지정할 수 있습니다. –with-cc-opt=”-D FD_SETSIZE=2048″.

--with-ld=opt=parameters

링크 중에 사용할 추가 매개변수를 설정합니다. FreeBSD에서 시스템 PCRE 라이브러리를 사용할 때 –with-ld-opt=”-L /usr/local/lib”을 지정해야 합니다.

--with-cpu-opt=cpu

지정된 CPU별로 구축을 활성화합니다 : 

pentium, pentiumpro, pentium3, pentium4, athlon, opteron, sparc32, sparc64, ppc64.

--without-pcre

PCRE 라이브러리 사용을 비활성화합니다.

--with-pcre

PCRE 라이브러리 사용을 강제합니다.

--with-pcre=path

PCRE 라이브러리 소스로 이동하는 경로를 설정합니다. 라이브러리 배포판(버전 4.4 — 8.43)을 PCRE 사이트에서 다운로드하고 추출해야 합니다. 나머지는 nginx의 ./configure와 make에서 처리합니다. 이 라이브러리는 location 명령의 정규식 지원과 ngx_http_rewrite_module 모듈에 필요합니다.

--with-pcre-opt=parameters

PCRE에 추가 빌드 옵션을 설정합니다.

--with-pcre-jit

“JIT 컴파일” 지원으로 PCRE 라이브러리를 구축합니다(1.1.12, pcre_jit 명령).

--with-zlib=path

zlib 라이브러리의 소스로 이동하는 경로를 설정합니다. 라이브러리 배포판(버전 1.1.3 — 1.2.11)을 zlib 사이트에서 다운로드하고 추출해야 합니다. 나머지는 nginx의 ./configure와 make에서 처리합니다. 이 라이브러리는 ngx_http_gzip_module 모듈에 필요합니다.

--with-zlib-opt=parameters

zlib에 추가 빌드 옵션을 설정합니다.

--with-zlib-asm=cpu

지정된 CPU 중 하나에 최적화된 zlib 어셈블러 소스 사용을 활성화합니다. pentium, pentiumpro.

--with-libatomic

libatomic_ops 라이브러리 사용을 강제합니다.

--with-libatomic=path

libatomic_ops 라이브러리 소스로 경로를 설정합니다.

--with-openssl=path

OpenSSL 라이브러리 소스로 경로를 설정합니다.

--with-openssl-opt=parameters

OpenSSL에 추가 빌드 옵션을 설정합니다.

--with-debug

디버깅 로그를 활성화합니다.

매개변수 사용 예시(한 행에 입력):

./configure
    --sbin-path=/usr/local/nginx/nginx
    --conf-path=/usr/local/nginx/nginx.conf
    --pid-path=/usr/local/nginx/nginx.pid
    --with-http_ssl_module
    --with-pcre=../pcre-8.44
    --with-zlib=../zlib-1.2.11

구성 후에 nginx는 make를 사용하여 컴파일 및 설치합니다.