目的
Nginx + Unicorn でアプリを動かしている状態で、/static 以下の URL に対するリクエストだけ /var/www/html_doc から配信したい。
ダメだった設定
ググっていくつかのページを参照しながら、次のように location ディレクティブを設定した。
location /static { root /var/www/html_doc/; break; }
これだとうまくいかない。
原因と解決
error.log を見てみると、/static/path/to/file.html にアクセスした時に /var/www/html_doc/static/path/to/file.html を探しているのが分かった。どうも URL の一部である /static は置き換えてくれるわけじゃないらしい。
というわけで、下のように自前で rewrite したらうまくいった。
location /static { root /var/www/html_doc/; rewrite '^/static(.*)$' $1; break; }