(nginx)リバースプロキシの設定をしてみる

投稿者: | 2016年11月5日

みなさんこんにちは。ヒロウミです。

nginxの設定を行ってみたので備忘録としてメモっておこうと思います。環境はこんな感じです。

nginx%e3%83%86%e3%82%b9%e3%83%88%e7%92%b0%e5%a2%83

nginxテスト環境

やりたいことは作業用PCのhostsにnginxのIPアドレスに対して別名を登録。それをサイトアクセス時にnginxに振り分けてもらうというものです。それでは試してみます。
作業用PCの/etc/hostsは以下のように記述しています。

192.168.0.3 nodered01.localdomain nodered02.localdomain

環境セットアップ

作業開始前にnginx,nodered01,02の下準備を行います。

新規ユーザ作成
$ sudo adduser hiro

sudoに追加
$ sudo gpasswd -a hiro sudo

ユーザ変更
$ su hiro

パッケージリストの更新
$ sudo apt-get update

nodered01,02の設定

次にnginxの振り分け先になるnode-redのインストール/起動を行います。なお、node-redのポートは1880です。

リポジトリの追加(/etc/apt/sources.list.dに配置される)
$ sudo add-apt-repository ppa:chris-lea/node.js

リポジトリ情報の更新
$ sudo apt-get update

nodejsのインストール
$ sudo apt-get install -y nodejs

node-redのインストール
$ sudo npm install -g node-red

node-redの起動
$ node-red

nginxの設定

アクセスが来た際にホスト名を元に振り分け先を判断します。

設定ファイルのあるディレクトリへ移動
$ cd /etc/nginx/sites-available/

設定ファイルの追加
$ sudo vim nodered 
server {
  server_name nodered01.localdomain;
  proxy_set_header Host $host;
  location / {
    proxy_pass http://192.168.0.5:1880;
  }
}
server {
  server_name nodered02.localdomain;
  proxy_set_header Host $host;
  location / {
    proxy_pass http://192.168.0.8:1880;
  }
}

設定ファイルの反映
$ sudo ln -s /etc/nginx/sites-available/nodered /etc/nginx/sites-enabled/
$ sudo service nginx reload

 

作業用PCからテスト

上記の設定が完了したらnginxで宛先を振り分けられているかテストします。ブラウザにそれぞれのアドレスを入力しnode-redの画面が表示されればOK!!

私はserver_nameの項目を始めは「nodered01」のように記述していたのですが、それではnginxによる振り分けは行われず「nodered01.localdomain」の様に「ホスト名.ドメイン名」と記述することで解決できました。

まとめ

今回はnginxがどのように動いているのかを手探りでテストしてみたという感じです。設定内容についても今後理解を深めていこうと思います。

 

参考サイト:

Node-RED入門 〜ローカルインストールからRESTful APIまで

[Ubuntu] apt-get まとめ

ubuntu ユーザを追加して sudo 権限をつける

なんなんなん行く?

UbuntuのPPAて何?