nginxをapacheのリバースプロキシとして設定する

No Comments

勉強のために今流行のnginxをapacheのリバースプロキシとして設定することを試みた。
nginxは”Webサーバー” + “リバースプロキシ”の機能を持っており,C10K問題に対応して設計されたサーバーとのこと。

参考にしたサイトはapache のかわりにnginxを使ってみる(10) nginx をリバースプロキシとして使ってみたのサイト。

以下,OSはUbuntu11.04とする。

インストール

最新の安定版 Nginx が LaunchPad 上の Nginx PPA から取得できる。
下記のように入力し,インストールする。

2012年5月現在で,バージョン1.2.0をインストールすることができた。

nginx.confを編集する

/etc/nginx/nginx.confはデフォルトのままとした。

nginxのリバースプロキシ設定

/etc/nginx/conf.d/proxy.confにリバースプロキシの設定を記述。
proxy_set_headerを指定して、バックエンドサーバに対してクライアントのIPアドレスを教える。

再起動(sodo /etc/init.d/nginx restart)時にキャッシュ用ディレクトリを作れなかったという類のエラーが出た場合は自分で作る。
その際は所有者とグループをnginxを実行しているユーザーに合わせる。

sites-available/defaultの設定

/etc/nginx/sites-available/defaultの編集を行う。
default以外に記述する場合は,sites-enabledにシンボリックリンクを貼るのを忘れないこと。
下記,ポート8080にてApacheがlistenしているとして記述。

$do_not_cacheの値が0以外の値だと,キャッシュを使わなくなる。
ここで,場合分けなどして設定する。

apacheの設定

リバースプロキシ用のモジュールをインストール。
ApacheのログにnginxのサーバーのIPではなく,クライアントのIPが表示されるようにするためのもの。

再起動

再起動して完了。

次はapache上のコンテンツをnginxのWebサーバーで表示させることを試みよう。


403エラーの代わりに404エラーを返す

1 Comment

最近,Webサーバーのアクセスログを見ているとブルートフォース攻撃と見られるアクセスを発見した。

攻撃に対して403エラーを返してしまうとそのコンテンツがサーバー上に存在することがわかってしまうのでよろしくない。

そこで代わりに404エラーを返すように設定した。

仮に下記の条件で実施したとする。

  • WebサーバーはApache
  • (DocumentRoot)/error/を作り,表示可能な設定にしている
  • PHPが使用できる

まず,Apacheのコンフィグファイル(httpd.conf等)に下記を追加する。

次に(DocumentRoot)/error/404.phpを作成する。

Apacheの404エラーページを真似た表示にしてみた。

ちなみにサーバーシグネチャを入れるとバージョンがわかってしまうのでセキュリティ上入れない方が良いと思われる。
(HTTPレスポンスのServerヘッダの設定も変更してバージョンを表示させないほうが良い)

これでOK。