nginx連載
会社のブログ"インフラエンジニアway - Powered by HEARTBEATS"で"nginx連載"という記事を書いています。
このはてなダイアリーではメモ書きみたいな感じでnginxの設定について書いていますが、会社のブログではまとめた内容を書いていきます。
Cactiをnginxで利用するための設定例
ウェブアプリケーションを何でもnginxで動かしてみようシリーズになっているこの日記ですが、今回はCactiです。
Ubuntu Server 11.10におけるCactiをnginxで利用するための設定例をメモとして書いておきます。これはapacheの設定例をnginx用に書き換えてみたものです。
/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用に書き換えてみたものです。
PHPをphp-fpm経由で、CGIをfcgiwrap経由で動かしています。
注意点としてはベーシック認証のユーザー情報をPHPとCGIに渡してあげることです(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/ をご覧ください。
現時点では、日本語のルール+アルファしか提供していません。