at posts/single.html

[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/diarytdiary-core/public へのシンボリックリンクとすることで、Webサーバ側で処理できる。 なお、tdiary-core/public/assets にファイルをコピーするには、 rake assets:copy タスクを使えばいい。

この日記も体感でかなり早くなったので、効果てきめん。

関連する日記