[tDiary]日記の静的ファイルをWebサーバ(Nginx)が返すようにした
今までやっていなかったのか…というのも驚きだけど。Webサーバとして使っているNginxの設定がうまくいかなくて、日記関連のデータはCSSやJavaScriptも含めて、すべてバックエンドのUnicornサーバで返すようにしていた。これでは同時接続に強いNginxを使っている意味がないので、静的ファイルはWebサーバが返すようにした。最近はtDiaryプラグインでJavaScriptを使うものも増えてきたので、フロントエンドのNginxで返してあげれば、バックエンドのUnicornの処理はだいぶ軽くなる。
nginx.confの設定ファイル(基本設定は除く)はこうなった。
upstream www.machu.jp {
server localhost:8080;
}
server {
root /var/www/www.machu.jp;
index index.html index.htm;
server_name www.machu.jp;
access_log /var/log/nginx/www.machu.jp.access.log;
error_log /var/log/nginx/www.machu.jp.error.log;
location ~ .*\.(css|js|jpg|gif|png) {
expires 7d;
break;
}
location ~ ^/diary/ {
try_files $uri @unicorn;
}
location @unicorn {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://www.machu.jp;
}
}
Rack環境で動かすtDiaryは、Railsなどと同じように静的ファイルを public
ディレクトリに置くようになっている。そこで、 /var/www/www.machu.jp/diary
を tdiary-core/public
へのシンボリックリンクとすることで、Webサーバ側で処理できる。
なお、tdiary-core/public/assets
にファイルをコピーするには、 rake assets:copy
タスクを使えばいい。
この日記も体感でかなり早くなったので、効果てきめん。