Help us understand the problem. What is going on with this article?

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

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

murachi1208
社内では,「Javaが嫌いでしょう、このはげ!(スキンヘッドですw)」と勝手に勘違いされてるしがないオッサンエンジニア。最近すきなことはDevOpsやらCI関係やら構築回りですが、個人的趣味なので仕事とは一切関係ありませんw ※内容は個人的趣味範囲であり所属組織とは関係ありません。
http://www.sea-bird.org
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした