1. 개요

지난 번에 Linux에서 Nginx 1.4.5 설치하기 - 1편 을 통하여

http://www.sarc.io/index.php/nginx/57-linux-nginx-1-4-5

1.4.5 소스를 받아 설치하는 과정을 간략히 보여드린 바 있습니다.

이번 주에는 몇가지 컴파일 옵션의 의미와 그것을 설치하는 과정을 말씀드리고자 합니다.


2. --with-http_ssl_module

Nginx가 https를 처리할 수 있도록 합니다.

기본 적으로는 https를 처리할 수 없게 되어 있으므로 https 통신이 필요한 경우 반드시 추가가 필요합니다.

또한 소스 컴파일 시점에 해당 장비에 openssl이 설치되어 있어야 합니다.

(확인은, openssl 을 실행해보면 될 것 같네요)

 # ./configure --prefix=/home/nginx --with-http_ssl_module
(생략)
checking for getaddrinfo() ... found
checking for PCRE library ... found
checking for PCRE JIT support ... not found
checking for OpenSSL library ... found
checking for zlib library ... found
creating objs/Makefile

Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1: using OpenSSL library
  + using system zlib library

  nginx path prefix: "/home/nginx"
  nginx binary file: "/home/nginx/sbin/nginx"
(생략)

그리고 make, make install 까지 하시면 https 를 사용할 수 있는 Nginx가 됩니다.

nginx.conf 를 보면 다음과 같은 설정이 있지요. (물론 이 설정은 --with-http_ssl_module 을 하지 않았더라도 기본적으로 포함되어 있습니다)

적절히 수정하여 사용하시면 될 듯 합니다.

# HTTPS server
#
#server {
# listen 443;
# server_name localhost;

# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_timeout 5m;

# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

 


3. --with-zlib=

압축 모듈인 ngx_http_gzip_module을 사용하려면 필요한 컴파일 옵션입니다.

= 뒤에는 zlib 라이브러리 경로를 기술합니다.

zlib이 깔려있는지, 있다면 어디 있는지 몰라서 그냥 yum으로 다시 한번 설치하려 했습니다.

# yum install zlib

Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: ftp.daum.net
* extras: ftp.daum.net
* updates: ftp.daum.net
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
Setting up Install Process
Package zlib-1.2.3-29.el6.x86_64 already installed and latest version
Nothing to do

이미 설치되어 있다는군요.

그런데 Nginx 소스 디렉토리에서 찾아보니

# find . -name "*zlib*"
./auto/lib/zlib
./auto/lib/zlib/patch.zlib.h

뭔가 있습니다. 이들을 이용하여 컴파일을 해보도록 하겠습니다.

# ./configure --prefix=/home/nginx --with-zlib=./auto/lib/zlib

(생략)

Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ md5: using system crypto library
+ sha1: using system crypto library
+ using zlib library: ./auto/lib/zlib
(생략)

configure 성공했구요, make 실행하였습니다.

 # make

(생략)

cd ./auto/lib/zlib \
&& make distclean \
&& CFLAGS="-O2 -fomit-frame-pointer -pipe " CC="cc" \
./configure \
&& make libz.a
make[2]: Entering directory `/down/nginx/nginx-1.4.5/auto/lib/zlib'
make[2]: *** 타겟 `distclean'를 만들 규칙이 없음. 멈춤.
make[2]: Leaving directory `/down/nginx/nginx-1.4.5/auto/lib/zlib'
make[1]: *** [auto/lib/zlib/libz.a] 오류 2
make[1]: Leaving directory `/down/nginx/nginx-1.4.5'
make: *** [build] 오류 2

실패합니다. 저걸 사용하는 것이 아닌가 봅니다.

그래서 zlib.net 홈페이지에 가서 1.2.8 소스(tar.gz)를 다운로드 받기로 합니다. 적절한 위치에 풀고, 다시 시도합니다.

# ./configure --prefix=/home/nginx --with-zlib=../zlib-1.2.8

(생략)

Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ md5: using system crypto library
+ sha1: using system crypto library
+ using zlib library: ../zlib-1.2.8

(생략)

다시 make 합니다.

# make

(생략)

make[1]: Leaving directory `/down/nginx/nginx-1.4.5'
make -f objs/Makefile manpage
make[1]: Entering directory `/down/nginx/nginx-1.4.5'
sed -e "s|%%PREFIX%%|/home/nginx|" \
-e "s|%%PID_PATH%%|/home/nginx/logs/nginx.pid|" \
-e "s|%%CONF_PATH%%|/home/nginx/conf/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/home/nginx/logs/error.log|" \
< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory `/down/nginx/nginx-1.4.5'

성공이네요. 이어진 make install은 전광석화 같은 속도로 끝납니다.

nginx.conf 내 설정은 다음과 같습니다.

  #gzip  on;

default는 off이니 기능을 사용하시려면 명시적으로 on 해야 합니다.

gzip on시에 기본으로 (default) 압축 적용되는 mime type은 text/html 입니다.