トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   一覧 最終更新   ヘルプ   最終更新のRSS
 


動作確認ディストリビューション

Nginx 0.8.54のインストール

Nginx用ユーザーの作成

# useradd -s /sbin/nologin -d /usr/local/nginx -m nginx

あらかじめ、必要なパッケージをインストールしておく
gccはコンパイルのために必要

# yum -y install gcc

gccを入れておかないと。。。

# ./configure --user=nginx --group=nginx
checking for OS
 + Linux 2.6.18-194.32.1.el5 i686
checking for C compiler ... not found

./configure: error: C compiler gcc is not found

と怒られます。

pcre-develはRewrite機能を利用する場合に必要

# yum -y install pcre-devel

pcre-develを入れておかないと。。。

# ./configure --user=nginx --group=nginx
checking for OS
 + Linux 2.6.18-194.32.1.el5 i686
 ・
 ・
 省略
 ・
 ・
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

と怒られます。

openssl-develはSSLキャッシュ機能を利用する場合に必要

# yum -y install openssl-devel

openssl-develを入れておかないと。。。

# ./configure --user=nginx --group=nginx --with-pcre 
checking for OS
 + Linux 2.6.18-194.32.1.el5 i686
 ・
 ・
  省略
 ・
 ・
./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library.  You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.

と怒られます。

Nginxのサイト」の「InstallOptions」の「Example 5」にも記載されている通り、Redhatベースのディストリビューション使う際は、
「zlib-devel」も「First, install the dependencies」として挙げられていますが、「openssl-devel」をyumでインストールすると、
依存関係で勝手に入るので、ここではあまり気にしなくていいです。

つまり、まとめると「Example 5」の通りに、以下をやればOKです。

# yum -y install gcc pcre-devel openssl-devel zlib-devel

Nginxのソースファイルを取得

# cd /usr/local/src
# wget http://sysoev.ru/nginx/nginx-0.8.54.tar.gz

ソースファイルの展開

# tar zxvf nginx-0.8.54.tar.gz
# cd nginx-0.8.54

configureオプションの確認
※詳しくは、「InstallOptions」のページを参照。

# ./configure --help

  --help                             this message

  --prefix=PATH                      set the installation prefix
  --sbin-path=PATH                   set path to the nginx binary file
  --conf-path=PATH                   set path to the nginx.conf file
  --error-log-path=PATH              set path to the error log
  --pid-path=PATH                    set path to nginx.pid file
  --lock-path=PATH                   set path to nginx.lock file

  --user=USER                        set non-privilege user
                                     for the worker processes
  --group=GROUP                      set non-privilege group
                                     for the worker processes

  --builddir=DIR                     set the build directory

  --with-rtsig_module                enable rtsig module
  --with-select_module               enable select module
  --without-select_module            disable select module
  --with-poll_module                 enable poll module
  --without-poll_module              disable poll module

  --with-file-aio                    enable file aio support
  --with-ipv6                        enable ipv6 support

  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-http_realip_module          enable ngx_http_realip_module
  --with-http_addition_module        enable ngx_http_addition_module
  --with-http_xslt_module            enable ngx_http_xslt_module
  --with-http_image_filter_module    enable ngx_http_image_filter_module
  --with-http_geoip_module           enable ngx_http_geoip_module
  --with-http_sub_module             enable ngx_http_sub_module
  --with-http_dav_module             enable ngx_http_dav_module
  --with-http_flv_module             enable ngx_http_flv_module
  --with-http_gzip_static_module     enable ngx_http_gzip_static_module
  --with-http_random_index_module    enable ngx_http_random_index_module
  --with-http_secure_link_module     enable ngx_http_secure_link_module
  --with-http_degradation_module     enable ngx_http_degradation_module
  --with-http_stub_status_module     enable ngx_http_stub_status_module

  --without-http_charset_module      disable ngx_http_charset_module
  --without-http_gzip_module         disable ngx_http_gzip_module
  --without-http_ssi_module          disable ngx_http_ssi_module
  --without-http_userid_module       disable ngx_http_userid_module
  --without-http_access_module       disable ngx_http_access_module
  --without-http_auth_basic_module   disable ngx_http_auth_basic_module
  --without-http_autoindex_module    disable ngx_http_autoindex_module
  --without-http_geo_module          disable ngx_http_geo_module
  --without-http_map_module          disable ngx_http_map_module
  --without-http_split_clients_module disable ngx_http_split_clients_module
  --without-http_referer_module      disable ngx_http_referer_module
  --without-http_rewrite_module      disable ngx_http_rewrite_module
  --without-http_proxy_module        disable ngx_http_proxy_module
  --without-http_fastcgi_module      disable ngx_http_fastcgi_module
  --without-http_uwsgi_module        disable ngx_http_uwsgi_module
  --without-http_scgi_module         disable ngx_http_scgi_module
  --without-http_memcached_module    disable ngx_http_memcached_module
  --without-http_limit_zone_module   disable ngx_http_limit_zone_module
  --without-http_limit_req_module    disable ngx_http_limit_req_module
  --without-http_empty_gif_module    disable ngx_http_empty_gif_module
  --without-http_browser_module      disable ngx_http_browser_module
  --without-http_upstream_ip_hash_module
                                     disable ngx_http_upstream_ip_hash_module

  --with-http_perl_module            enable ngx_http_perl_module
  --with-perl_modules_path=PATH      set path to the perl modules
  --with-perl=PATH                   set path to the perl binary

  --http-log-path=PATH               set path to the http access log
  --http-client-body-temp-path=PATH  set path to the http client request body
                                     temporary files
  --http-proxy-temp-path=PATH        set path to the http proxy temporary files
  --http-fastcgi-temp-path=PATH      set path to the http fastcgi temporary
                                     files
  --http-uwsgi-temp-path=PATH        set path to the http uwsgi temporary files
  --http-scgi-temp-path=PATH         set path to the http scgi temporary files

  --without-http                     disable HTTP server
  --without-http-cache               disable HTTP cache

  --with-mail                        enable POP3/IMAP4/SMTP proxy module
  --with-mail_ssl_module             enable ngx_mail_ssl_module
  --without-mail_pop3_module         disable ngx_mail_pop3_module
  --without-mail_imap_module         disable ngx_mail_imap_module
  --without-mail_smtp_module         disable ngx_mail_smtp_module

  --with-google_perftools_module     enable ngx_google_perftools_module
  --with-cpp_test_module             enable ngx_cpp_test_module

  --add-module=PATH                  enable an external module

  --with-cc=PATH                     set path to C compiler
  --with-cpp=PATH                    set path to C preprocessor
  --with-cc-opt=OPTIONS              set additional options for C compiler
  --with-ld-opt=OPTIONS              set additional options for linker
  --with-cpu-opt=CPU                 build for specified CPU, the valid values:
                                     pentium, pentiumpro, pentium3, pentium4,
                                     athlon, opteron, sparc32, sparc64, ppc64

  --without-pcre                     disable PCRE library usage
  --with-pcre                        force PCRE library usage
  --with-pcre=DIR                    set path to PCRE library sources
  --with-pcre-opt=OPTIONS            set additional options for PCRE building

  --with-md5=DIR                     set path to md5 library sources
  --with-md5-opt=OPTIONS             set additional options for md5 building
  --with-md5-asm                     use md5 assembler sources

  --with-sha1=DIR                    set path to sha1 library sources
  --with-sha1-opt=OPTIONS            set additional options for sha1 building
  --with-sha1-asm                    use sha1 assembler sources

  --with-zlib=DIR                    set path to zlib library sources
  --with-zlib-opt=OPTIONS            set additional options for zlib building
  --with-zlib-asm=CPU                use zlib assembler sources optimized
                                     for specified CPU, the valid values:
                                     pentium, pentiumpro

  --with-libatomic                   force libatomic_ops library usage
  --with-libatomic=DIR               set path to libatomic_ops library sources

  --with-openssl=DIR                 set path to OpenSSL library sources
  --with-openssl-opt=OPTIONS         set additional options for OpenSSL building

  --with-debug                       enable the debugging logging

コンパイル準備

# ./configure --user=nginx --group=nginx --with-pcre --with-http_ssl_module
 ・
 ・
 省略
 ・
 ・
Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1 library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

コンパイル

# make

インストール

# make install

起動確認

# /usr/local/nginx/sbin/nginx
# netstat -at |grep :http <=以下が表示されることを確認
tcp        0      0 *:http                      *:*                         LISTEN

停止

# /usr/local/nginx/sbin/nginx -s quit
# netstat -at |grep :http <=何も表示されないことを確認

RedHatNginxInitScript」から、Redhat用の起動スクリプトを取得して、インストールログに基づき、パスなどを調整する。

起動スクリプトの取得

# cd /etc/init.d
# wget -O nginx "http://wiki.nginx.org/index.php?title=RedHatNginxInitScript&action=raw&anchor=nginx"

起動スクリプトの修正

# vi nginx

# config:      /etc/nginx/nginx.conf
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# config:      /usr/local/nginx/conf/nginx.conf

nginx="/usr/sbin/nginx"
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
nginx="/usr/local/nginx/sbin/nginx"

NGINX_CONF_FILE="/etc/nginx/nginx.conf"
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

権限の変更

# chmod 755 /etc/init.d/nginx

起動テスト

# service nginx start
nginx を起動中:                                            [  OK  ]
# netstat -at |grep :http <=以下が表示されることを確認
tcp        0      0 *:http                      *:*                         LISTEN

停止テスト

# service nginx stop
nginx を停止中:                                            [  OK  ]
# netstat -at |grep :http <=何も表示されないことを確認

自動起動設定

# chkconfig --add nginx
# chkconfig nginx on
# chkconfig --list nginx
nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off

リバースプロキシとしての設定方法

設定ファイルの作成

2台のサーバでロードバランスを行い、もう1台は開発用サーバとして利用する構成。

※weightに数値を設定することで、負荷分散の優先度を設定できます。1がデフォルト値で数値が大きくなるほど、優先度が高くなるようです。
考え方は、「Using Nginx as a load balancer」の「weight」の項目が分かりやすい例で、
2台構成で、1台を「weight=4」、1台を未指定(デフォルト値なので「weight=1」)に設定すると、
1台目は80%(=4/(4+1))、2台目は20%(=1/(1+4))の優先度といった感じになるようです。

# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.orig
# vi /usr/local/nginx/conf/nginx.conf

「proxy_set_header」の行は、プロキシにアクセスしてきたクライアントのIPアドレスをWebサーバに引き継ぐための設定です。
「upstream」でリダイレクト先のWebサーバーの情報を列挙します。
書式は「server IPアドレス:ポート番号 weight=重み;」、もしくは、「server FQDN:ポート番号 weight=重み;」です。
nginx側で待ち受ける側の設定を、「server」として記述します。「listen」でポート番号を指定できるので、
「server」毎にポート番号を分けて記述することが可能です。なので、書き分けを行っておくと、nginxを起動したタイミングで、
複数のポートが待ち受け状態となります。

worker_processes  1;

events {
    worker_connections  1024;
}


http {

    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

    upstream www.lovebug.jp {
        server 192.168.WWW.WWW:80 weight=4;
        server 192.168.XXX.XXX:80;
    }

    server {
        listen       80;
        server_name  www.lovebug.jp;

        location / {
            proxy_pass http://www.lovebug.jp;
        }
    }

    upstream test.lovebug.jp {
        server 192.168.YYY.YYY:8080 weight=1;
    }

    server {
        listen       8080;
        server_name  test.lovebug.jp;

        location / {
            proxy_pass http://test.lovebug.jp;
        }
    }
}

リダイレクト先のApacheのログにnginxサーバーのIPが出力されないようにmod_rpaf、または、mod_extract_forwarded2を導入
mod_rpaf 0.6のインストール
mod_extract_forwarded2 0.1のインストール


Last-modified: 2011-02-18 (金) 00:56:00 (3217d)