NagiosのWebインターフェイスをnginxで利用するための設定例

Ubuntu Server 11.10におけるNagiosのWebインターフェイスをnginxで利用するための設定例をメモとして書いておきます。これはapacheの設定例をnginx用に書き換えてみたものです。

PHPphp-fpm経由で、CGIをfcgiwrap経由で動かしています。
注意点としてはベーシック認証のユーザー情報をPHPCGIに渡してあげることです(CGIにだけでよいかも)。これを行わないとCGIが認証エラーを出します。

/etc/ngixn/conf.d/nagios.conf

server {
        # 色々、略

        index index.html index.htm index.php;

        ## CGIの場所
        location /cgi-bin/nagios3 {
                # gzip圧縮のoff
                gzip off;

                # cgi-binディレクトリのroot
                root /usr/lib;

                # fcgiwrapのソケット
                fastcgi_pass unix:/var/run/fcgiwrap.socket;

                # fastcgi関連のパラメータファイルの読み込み
                include /etc/nginx/fastcgi_params;

                # スクリプト ファイルの絶対パス名の設定
                fastcgi_param SCRIPT_FILENAME /usr/lib$fastcgi_script_name;

                # 認証されたユーザ名を変数REMOTE_USERに格納してCGIに渡す設定
                fastcgi_param REMOTE_USER $remote_user;

                # ベーシック認証
                auth_basic "nagios";
                auth_basic_user_file /etc/nagios3/htpasswd.users;
        }

        ## CGIの場所
        location /nagios3/cgi-bin {
                # /nagios3/cgi-bin本来の場所の/cgi-bin/nagios3に書き換える
                rewrite ^/nagios3/cgi-bin/(.*) /cgi-bin/nagios3/$1;
        }

        ## スタイルシートの場所
        location /nagios3/stylesheets {
                alias /etc/nagios3/stylesheets;

                # ベーシック認証
                auth_basic "nagios";
                auth_basic_user_file /etc/nagios3/htpasswd.users;
        }

        ## NagiosのWebインターフェイスのコンテンツの場所
        location /nagios3 {
                alias /usr/share/nagios3/htdocs;

                # ベーシック認証
                auth_basic "nagios";
                auth_basic_user_file /etc/nagios3/htpasswd.users;
        }

        ## PHP
        # /nagios3ディレクトリ以下のphpファイルに一致する。
        # ファイル名だけ後方参照できるように()で囲む。
        location ~ ^/nagios3/(.*\.php)$ {
                # php-fpmのソケット
                fastcgi_pass unix:/var/run/php-fpm.sock;

                # fastcgi関連のパラメータファイルの読み込み
                include /etc/nginx/fastcgi_params;

                # スクリプト ファイルの絶対パス名の設定
                # URLのパス名とファイルのパス名がファイル名以外が一致しないので、
                # ファイル名だけ取り出して置き換える。
                fastcgi_param SCRIPT_FILENAME /usr/share/nagios3/htdocs/$1;

                # 認証されたユーザ名を変数REMOTE_USERに格納してPHPに渡す設定
                fastcgi_param REMOTE_USER $remote_user;

                # ベーシック認証
                auth_basic "nagios";
                auth_basic_user_file /etc/nagios3/htpasswd.users;
        }
}