Cactiをnginxで利用するための設定例

ウェブアプリケーションを何でもnginxで動かしてみようシリーズになっているこの日記ですが、今回はCactiです。

Ubuntu Server 11.10におけるCactiをnginxで利用するための設定例をメモとして書いておきます。これはapacheの設定例をnginx用に書き換えてみたものです。

PHPphp-fpm経由で動かしています。

/etc/ngixn/conf.d/cacti.conf

server {
        # 色々, 略

        index index.html index.htm index.php;

        ## cacti
        # コンテンツの場所
        location /cacti {
                alias /usr/share/cacti/site;

                # ベーシック認証
                auth_basic "cacti";
                auth_basic_user_file auth/htpasswd.cacti;
        }

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

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

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

                # ベーシック認証
                auth_basic "cacti";
                auth_basic_user_file auth/htpasswd.cacti;
        }
}

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;
        }
}

WordPressをnginxで利用するための設定例

Ubuntu Server 11.10におけるWordPressをnginxで利用するための設定例をメモとして書いておきます。
WordPressはドキュメントルートの下のwpというディレクトリに配置しています。ただし、コンテンツのURLにはhttp://example.jp/topic/のように/wpを見せないようにしています。コメント等は一切許可していません。
スマートフォン向けの画面を生成するためにWPtouchを利用しています。このため、キャッシュ機能には工夫をしています。

/etc/nginx/nginx.conf

http {
        # 略

        # キャッシュのパスの設定
        fastcgi_cache_path /var/run/nginx/cache levels=1:2 keys_zone=STATIC:20m max_size=20m inactive=24h;

        # 略
}

/etc/nginx/conf.d/wordpress.conf

server {
        # 色々、略

        # キャッシュの制御
        set $nocache '0';

        # WPtouchのために個別のキャッシュするためのキーのプレフィックス
        if ($http_user_agent ~* '(iPhone|iPod|incognito|webmate|Android|dream|CUPCAKE|blackberry9500|blackberry9530|blackberry9520|blackberry9550|blackberry 9800|webOS|s8000|bada|Googlebot-Mobile)') {
                set $wptouch_prefix 'wptouch-mobile.';
        }
        if ($cookie_wptouch_switch_toggle = 'normal') {
                set $wptouch_prefix 'wptouch-normal.';
        }

        # コンテンツのページ(キャッシュする)
        location / {
                if (-e $request_filename) {
                        break;
                }
                rewrite ^.+$  /index.php last;
        }

        # 管理用のページ(キャッシュしない)
        location /wp/ {
                if (-e $request_filename) {
                        break;
                }
                if (-d $request_filename) {
                        break;
                }
                set $nocache '1';
                rewrite ^.+$  /wp/index.php last;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                log_not_found off;
                access_log off;
        }

        # PHPのページをphp-fpmに渡す設定
        location ~ \.php {
                fastcgi_pass    unix:/var/run/php-fpm.sock;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param   PATH_INFO       $fastcgi_script_name;
                include /etc/nginx/fastcgi_params;

                # 動的ページのキャッシュの設定
                fastcgi_cache           STATIC;
                fastcgi_cache_key       "$wptouch_prefix$host$request_uri";
                fastcgi_cache_valid     200 10m;
                fastcgi_cache_valid     404 1m;
                fastcgi_cache_bypass    $nocache;
                fastcgi_no_cache        $nocache;
        }

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                log_not_found off;
                access_log off;
        }

        location ~ /\. {
                deny all;
                log_not_found off;
                access_log off;
        }
}

Roundcubeをnginxで利用するための設定例

Ubuntu Server 11.10におけるRoundcubeをnginxで利用するための設定例をメモとして書いておきます。これはapacheの設定例をnginx用に書き換えてみたものです。これで運用できています。

/etc/ngixn/conf.d/roundcube.conf

server {
        # 色々、略

        # Roundcubeのfavicon
        location /favicon.ico {
                alias /var/lib/roundcube/skins/default/images/favicon.ico;
                allow all;
        }

        # roundcubeのルート
        location /roundcube {
                alias /var/lib/roundcube;
                allow all;
        }

        # tiny mce
        location /roundcube/program/js/tiny_mce/ {
                alias /usr/share/tinymce/www/;
                allow all;
        }

        # php-fpmへパス
        location ~ \.php {
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME /var/lib$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
                allow all;
        }

        # 設定ファイル等へのアクセス防止
        location /roundcube/config {
                deny all;
        }
        location /roundcube/temp {
                deny all;
        }
        location /roundcube/logs {
                deny all;
        }
}

SpamAssassinのルールファイルの自動更新(sa-update)

SpamAssassinのルールファイルの自動更新(sa-update)のリポジトリの提供を試験的に開始しました。詳しくは http://www.emaillab.jp/spamassassin/sa-update/ をご覧ください。
現時点では、日本語のルール+アルファしか提供していません。