Apache2.4向けに再編集しました
「mod_rpaf ⇒ mod_remoteip」に
やっと Nginx を触ってみる
Nginx 勉強用に買った本が埋もれてました。そのうちと・・・思っていたら。すでに2年が経過しとった。
現在,我が家の構成として グローバル IP アドレスが一つしかないため複数のドメインを VirtualHost で運用してる状況。Nginx に全て置き換えてもいいのだけどここは Nginx -> Apache と多段にしてみる勉強がてらリバースプロキシサーバーとして設定してみる(そもそも Nginx が軽快で速いという理由は静的コンテンツを高速で配信する設計思想なところは理解しているつもり)。
リバースプロキシサーバーの設定ポリシー
リバースプロキシサーバーとして動作させるホストに Nginx をインストールする。またDNS設定済みででサブドメインが引けている状態であること、既存 Apache の設定は変更せずなどあるけど基本的には、問題があればすぐに戻せる構成にしてみる。
インストール
とりあえず特別な機能を使う用途がないのであれば、パッケージ版をインストールするのがベスト。当たり前ですがパッケージ版の Nginx では、デフォルトの機能しかインストールされていないので、拡張したい場合はソースからコンパイルすること(nginx -V で機能をみることができる)。
設定ファイル
/etc/nginx/conf.d の下に適当なファイル名で configファイルを作成します。
server {
listen 80;
server_name バーチャルホスト名; ← 外部から引けること
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_redirect off;
proxy_max_temp_file_size 0;
location / {
proxy_pass http://192.168.11.88;
}
}
Nginxでバージョン情報を隠す
公開サーバは色々と情報を公開すべきではないので、バージョン情報を隠しておきます。
http {
server_tokens off;
...
mod_remoteip の設定
後記の mod_rpaf
は、Apache 2.4 で使用にはコツがいるので Apache2.2 から標準モジュールとなった mod_remoteip
を使用する。
設定方法は RemoteIPHeader X-Forwarded-For
を /etc/httpd/conf/httpd.conf
の最後にでも指定しておけばよい。
アクセスログ指定 LogFormat
部分の定義を以下のように変更する。
※%a を指定するとアクセス元IP が出力されます。
LogFormat "%h ・・・・
↓
LogFormat "%a ・・・・
mod_rpaf のインストール(Apache2.4非推奨)
リバースプロキシサーバーから転送された情報を Apache側で受け取るとリバースプロキシサーバーのアドレス(192.168.11.88)が記録されてしまうため具合が悪いので、Apache側 に mod_rpaf モジュールをインストールする。
⇒ Apache 2.4 で使用する場合ちょっとコツがいるので mod_remoteip を使う
リーバスプロキシ/ロードバランサとmod_rpaf
nginx+apacheでちょっぴり快適なWebサーバーを目指してみる
nginxでリバースプロキシ先にホスト名が引き継がれない
Nginx を触ってみて
Nginx 少し毛嫌いしてた感じもあるけど設定ファイルは直感的で判りやすいのでいいかも。
意外と簡単にリバースプロキシサーバーの設定もできるもんだなと思った次第。
Rewrite
Apache だけど毎回忘れるのでRewriteのリンクメモ
参考サイト
nginx でリバースプロキシするときの Tips
仮想CentOSのnginx+Apach2でリバースプロキシ
nginx連載3回目: nginxの設定、その1