みなさんこんにちは。ヒロウミです。
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まで
