📝

Nginx でリバースプロキシサーバーつかってみる。Apache2.4向けに再編集)

2021/04/10に公開

Apache2.4向けに再編集しました

「mod_rpaf ⇒ mod_remoteip」に

やっと Nginx を触ってみる

Nginx 勉強用に買った本が埋もれてました。そのうちと・・・思っていたら。すでに2年が経過しとった。

現在,我が家の構成として グローバル IP アドレスが一つしかないため複数のドメインを VirtualHost で運用してる状況。Nginx に全て置き換えてもいいのだけどここは Nginx -> Apache と多段にしてみる勉強がてらリバースプロキシサーバーとして設定してみる(そもそも Nginx が軽快で速いという理由は静的コンテンツを高速で配信する設計思想なところは理解しているつもり)。

nginx.png

リバースプロキシサーバーの設定ポリシー

リバースプロキシサーバーとして動作させるホストに Nginx をインストールする。またDNS設定済みででサブドメインが引けている状態であること、既存 Apache の設定は変更せずなどあるけど基本的には、問題があればすぐに戻せる構成にしてみる。

nginx2.png

インストール

とりあえず特別な機能を使う用途がないのであれば、パッケージ版をインストールするのがベスト。当たり前ですがパッケージ版の Nginx では、デフォルトの機能しかインストールされていないので、拡張したい場合はソースからコンパイルすること(nginx -V で機能をみることができる)。

CentOS6.xにてnginxの最新版をインストールする手順

設定ファイル

/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_remoteip を使って LB 配下の Apache もアクセス元 IP を正しく認識できる

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のリンクメモ

Apache Rewrite 学習

参考サイト

nginx でリバースプロキシするときの Tips
仮想CentOSのnginx+Apach2でリバースプロキシ
nginx連載3回目: nginxの設定、その1

GitHubで編集を提案

Discussion