6.2. Nginx

NginxはオープンソースのWebサーバです。HTTPサーバやリバースプロキシサーバ等の機能を持ちます。ICEではバックエンド内で動作する様々なHTTPサービスに対するリバースプロキシサーバと、エッジへファイルを配信するためのファイルサーバして動作します。

6.2.1. サービス

  • サービス開始(CentOSの場合)
$ service nginx start
  • サービス停止(CentOSの場合)
$ service nginx stop
  • 設定ファイル変更の反映(CentOSの場合)
$ service nginx reload

6.2.2. リバースプロキシ マッピングルール

サービス 受け付けURL 転送先URL
ICE Backend API ホスト名/api/v1/ localhost:22401/api/v1/
ファイルサーバ ホスト名/fileserver/ localhost:22402/
MQTT Broker管理コンソール ホスト名/rabbitmq/ localhost:22404/
mongo-express ホスト名/mongo-express/ localhost:22405/mongo-exp ress/

6.2.3. ファイルサーバ

ファイルサーバでは/var/www/html配下を公開します。 公開ディレクトリ配下の下記のディレクトリは、アプリケーションにより予約されているため使用することはできません。

/var/www/html
├─ man/                    ICEのマニュアルが格納されます(マニュアルをインストールした場合のみ)。
└─ upload/                 エッジからアップロードされたファイルが格納されます。

6.2.4. 設定ファイル

バックエンドで使用するNginxの設定ファイルは/etc/nginx/conf.d/配下にあります。

/etc/nginx/conf.d/
  common-proxies.conf         共通の設定を行います。
  file-server.conf            ファイルサーバの設定を行います。
  locations/                  リバースプロキシを受け付けるURLを指定します。
  upstreams/                  リバースプロキシで転送するURLを指定します。
/etc/nginx/conf.d/locations/
  fileserver.conf             ファイルサーバのリバースプロキシ設定です。
  backend_restapi.conf        Backend APIのリバースプロキシ設定です。
  mongo-express.conf          mongo-expressのリバースプロキシ設定です。
  rabbitmq_management.conf    RabbitMQの管理コンソールのリバースプロキシ設定です。
/etc/nginx/conf.d/upstreams/
  fileserver.conf             ファイルサーバのリバースプロキシ設定です。
  backend_restapi.conf        Backend APIのリバースプロキシ設定です。
  rabbitmq_management.conf    RabbitMQの管理コンソールのリバースプロキシ設定です。

6.2.5. 使用ポート

Nginxでは以下のポートを使用します。

ポート番号 | 用途
80 リバースプロキシ
22402 ファイルサーバ

6.2.6. Nginxのアップデート

バックエンドにインストールされるNginxは、公式サイトで公開されている最新のバージョンです。 インストール後にバージョンアップする場合は次のコマンドを実行します。

$ sudo yum update nginx

6.2.7. Nginx設定ファイルの更新

ICEで設定可能なNginxの設定項目一覧です。

6.2.7.1. client_max_body_size

Nginxで扱うリクエストのボディサイズを制限します。 この値を超えるボディを持つHTTPリクエストが来た場合、サーバは403エラーを返します。 0を設定した場合、ボディサイズを制限しません。

既定値 1m
playbookの設定箇所 ice.backend.reverse_proxy.max_body_size
関連する機能 リバースプロキシ

6.2.7.2. proxy_request_buffering

リバースプロキシ経由のリクエストをバッファリングするかどうかを指定します。

バッファする(”on”)場合、リバースプロキシがHTTPリクエストを全て受け取り メモリあるいはファイルシステムに一度記憶してから、リクエストを次のサーバに 転送します。

バッファしない(”off”)場合、リバースプロキシはHTTPリクエストをすべて受け取る前に HTTPリクエストを次のサーバに転送します。

既定値 “on”
playbookの設定箇所 ice.backend.reverse_proxy.max_body_size
関連する機能 リバースプロキシ

6.2.8. 公式サイト

Nginxに関する一般的な情報は公式サイト( https://nginx.org/ )をご参照ください。