nginx

nginxでリバースプロキシサーバを構築する手順を紹介

nginxを利用したリバースプロキシサーバの構築手順を紹介します。
今回構築した環境は以下の通りです。

環境

  • OS : Raspbian 10
  • nginx : 1.14.2

OSを見ていただくと分かるかもしれませんがRaspberry Piでnginxを動作させてみました。
モデルは第2世代なのでメモリが足りるか不安でしたが、無事に起動しております。

必要ファイルのインストール

nginxをインストールする

まずは、nginxをインストールします。
今回はソースからビルドしないので、aptでインストールしてゆきます。

リバースプロキシ向け設定反映

リバースプロキシサーバを構築するために、
下記2つの設定ファイルを編集していきます。

  • /etc/nginx/sites-available/default
  • /etc/nginx/nginx.conf

/etc/nginx/sites-available/defaultを編集

virtualhostの設定を行っておけば
後からサイトを増やす時も楽なのですが、今回は適用しません。
なお、HTTPSサイトにも対応した設定なので、汎用的に使うことができます。

なお、上記の設定項目は、
・アクセス元が"192.168.XXX.XXX/24"の時
・X-Forwarded-Forヘッダの最後についているIPをreal_ip_header
とする設定になります。
ロードバランサやリバースプロキシ環境では、
外部からアクセスしてきた際に送信元IPアドレスが変わってしまうので、
本当のアクセス元IPアドレスをログに記録することができなくなってしまいます
例えば、自宅でWebサーバを構築して、
ルータのNAT機能などを使っている場合も
今回の設定をしておかないと、アクセス元IPアドレスが全て
ルータなどのネットワーク機器になってしまいます。

/etc/nginx/nginx.confを編集

ここで重要なのは、リバースプロキシとして動作させるときに必要となりやすい
X-FORWARDED-FORというヘッダの値です。
log_format main という部分に記載している通り、
$http_x_forwarded_for の値を出力するように指示しています。
※自分の環境ではインストール時より既に記載がありました。
この設定があることで、ログファイルにアクセス元の正しいIPアドレスが記録されます。

ファイアウォール設定反映

サービスを立ち上げる前にファイアウォールの設定を行っておきましょう。

必要なポートを洗い出す

今回の設定では、80/tcpと443/tcpの2つをサービスするので、
これら2つをファイアウォールの設定に追加することとします。
あとは、sshを使って管理しているので22/tcpも開けておきましょう。

ufwコマンドで設定適用

サービスを立ち上げて作業完了

systemctlコマンドで起動

さて、nginxを立ち上げましょう。

起動時にエラーがでなければ作業完了です。
お疲れ様でした。

-nginx
-,