Apache のリバースプロキシとして Nginx を導入する

参考

NginxとApache - Qiita [キータ]

環境

Debian 7.1
Apache 2.2.22
Nginx 1.2.1

Nginx

Rails 関連の情報を漁っていて、前々から「Nginx + Unicorn が良いらしい」と聞いていたので興味はあったのだが、Nginx については「Apache より軽量な HTTP サーバー」程度の認識しかなかった。

ところが今さらながらに Nginx と Apache の共存が可能と知り、「Nginx + Unicorn + Rails」な環境に向けて、ひとまず Apache のリバースプロキシとして Nginx を導入することにした。

実は再挑戦だった

基本的に参考サイトの見よう見まねでの作業となったが、改めてサーバーの環境を確認したところ、Nginx はなぜかインストール済み。

そういえば半年ほど前に入れるだけ入れて良くわからないまま放置していたのだった。

その時に変な風に設定をいじっていたら嫌だなあと思いつつ、面倒くさいので再インストールはしなかったが、結果的に問題はなかったので良しとしておこう。

mod_rpaf

良く分からないのが mod_rpaf だが、どうやら Nginx が受けたリクエストを Apache に渡す時点で、Apache から見ると全部 localhost からのアクセスに見えてしまって実際のアクセス元が分からなくなってしまう問題への対処として必要らしい。

apt で一発。apache のモジュール設定の変更から再起動までやってくれた。素晴らしい。

# aptitude install libapache2-mod-rpaf 

Nginx の設定

Nginx がポート 80 で受けたリクエストを 8000 へリダイレクトさせるための設定ファイルを /etc/nginx/sites-available/ に作成して /etc/nginx/sites-enabled/ からリンクを張った。

/etc/nginx/sites-available/default へのリンクは使わないので削除。

このあたりの構成は debian 系ユーザであれば apache の設定と同じなので馴染みやすいと思う。 a2ensitea2dissite に相当するコマンドがあればなお良かったが贅沢は言うまい。

apache の設定

/etc/apache2/sites-available/ にある VirtualHost 別の設定ファイルのポートをすべて 8000 に変更、/etc/apache2/ports.conf の NameVirtualHost を *:8000 に、Listen を localhost:8000 に変更した。

Listen の設定で localhost を指定したのは、外部からのポート 8000 へのアクセスを弾くためだ。

再起動

Nginx と Apache を再起動して、無事にアクセスできることを確認。

めでたしめでたし。