Nginxのプロキシが動いてくれない(解決編)

Nginx のプロキシが動いてくれない問題が解決した。
↓このページが参考になった。

 cf. nginx連載3回目: nginxの設定、その1 – インフラエンジニアway

結論から言うと、アクセスログのフォーマットに定義していない名前を使っていたことだった。この行。

access_log /var/log/nginx/storage1.lathercraft.net/access.log main;

access_log ディレクティブには、ログファイル名のほかにログのフォーマットを名前で指定できる。ここでは main というのがそれだ。だけど、この間書いた(書いたというかネットからもらってきた)設定ファイルでは main という名前のログフォーマットが定義されていなかった。だからテストも通らなかったわけだ。

ログフォーマットは例えばこんなふうに定義できる。

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

これで main という名前のフォーマットが使えるようになる。

ところで、Nginx にはあらかじめ combined という名前のログフォーマットが組み込まれているそうだ。

log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';

せっかくなので、こっちを使うことにした。結局、最初に示した行はこう変わった。

access_log /var/log/nginx/storage1.lathercraft.net/access.log combined;

これでめでたく動くようになった。