nginxでリバースプロキシサーバの構築

リバースプロキシを使用して、外部公開しているwebサーバに直接アクセスできない構成にして、セキュリティを高めたい場合もあるかと思います。apacheを使用してリバースプロキシを構築することも可能ですが、nginxですと比較的コンフィグがわかりやすいことと、処理能力がapacheより良いとの事ですので、nginxで構成します。webサーバをapacheで構築していた場合、あえて別のパッケージを使用することで、セキュリティを高める狙いもあります。

今回の内容をイメージで表すと次のようになります。

webサーバにnginxでリバースプロキシ経由でアクセスするイメージ図

nginxのインストール

以下のコマンドでインストールします。

コンフィグ(/etc/nginx/nginx.conf)の編集

次にコンフィグファイル(/etc/nginx/nginx.conf)を下記の通り編集します。

ここで、コンフィグ中に出てきた、独自の 2048 ビットの位数を持つグループを指定する DHE パラメータファイルを PEM 形式で生成するために、以下のopensslコマンドを実行します。

このあたりのTLSの具体的な暗号化については、IPAのTLS 暗号設定 サーバ設定編 のガイドラインを参考に設定してください。

IPアドレス直打ちのアクセス拒否設定(block_ip.conf)

こちらの設定はお好みで実施頂ければと思いますが、今後の運用を考慮して、事前に設定しておいて損はないと思います。具体的には、以下の内容のコンフィグファイル(ここではblock_ip.conf)を、/etc/nginx/conf.d/ に作成します。

なお、サーバ証明書で中間証明書も設定する場合、apacheでは中間証明書の指定パラメータがありましたが、nginxにはありません。この場合、サーバ証明書ファイル(上記コンフィグでいうと、dassyi.com.crt)に、中間証明書の内容を追記しておくようにしましょう。

サービスを起動して動作確認

ここまで準備ができましたら、問題なく動作するか確認を行います。

ただし大前提として、それぞれのサイトのURLがDNSで引けることになります。DNSの設定についてはここでは割愛します。

こちらで、Webブラウザでホームページにアクセスします。問題なくWebページが閲覧できることに加え、nginx側では、 /var/log/nginx/access.log にログが記録されていることを確認します。

一方のapache側では、 /var/log/pache/access.log を確認し、リバースプロキシからアクセスが来ていることを確認します。

特に問題が無ければ、自動起動も有効にしておきます。

また、Webサーバ側のFWも外部公開する必要は無いので、必要に応じて、リバースプロキシサーバからのみアクセスできるようにしておきます。

今回はここまでです。最後までお読みいただきありがとうございました。