環境構築:Nginxでリバースプロキシとか(寄り道)
どうも、メンターです。
今日、メンティとの顔合わせと半年後の目標を決めてきました。
「LPICを受けたい」と言う彼に対して、「そんなのなくてもLinuxいじれるよ」と一蹴しました。
だって、もう、俺は動いているんだもん(勝手に)。
というわけで。
スクラム(アジャイル開発)で、Node.jsで、Webアプリ開発をやることにしました。
チャットもね、すんなり使えるようになったし。めでたし、めでたし。
とはいかない。
スクラム開発だとデイリースクラムが必須であり、
その場がチャットベースになることは、まぁ、良いとして。
問題は私の仕事場は、Rocket.chatの3000番ポートにアクセスできなかった。
なぜか。
80番でないからだろうねぇ、きっと。。。
わけもわからない外部サーバのわけわからんポートにはアクセスできないようになっているんだね。
よく出来ているよ、本当に。
前置きは長くなったけど、Nginxを使って、80->3000のポートフォワーディング的なことをします。
Nginx on Docker
Nginx用に作業場を作っておくと良い。
コンフィグファイルとか作るから。
その作業場でコマンドを打っていく。
# docker run --name nginx -d nginx # mkdir nginx # docker cp nginx:/etc/nginx/nginx.conf nginx/nginx.conf # docker rm nginx
docker cp
を使って、デフォルトのコンフィグを持ってきている。
特に必要なければ、やらなくても良い。
次に、リバースプロキシの設定を作成する
# mkdir nginx/conf.d # vi nginx/conf.d/chat.conf server { server_name (バーチャルホスト名); proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; location / { proxy_pass http://(ホスト名):3000; } }
バーチャルホスト名には、DNSのAレコードを設定
私の場合、chat
というAレコードを設定しているので、chat.hoge.co.jp
という感じ
hoge.co.jp
がドメイン名で設定しているヤツね。
nginx.conf
は、特にいじらなくてもOKだった。
必要に応じて編集してくださいな。
じゃ、起動します
# docker run --name nginx -p 80:80 \ -v `pwd`/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \ -v `pwd`/nginx/conf.d:/etc/nginx/conf.d:ro \ -d nginx
わかりづらそうなオプションの意味を解説していくと、
-p 80:80
: ホストOSの80番ポートのアクセスをコンテナの80番として渡すよ
-v XXXX:YYYY:ro
: XXXがホストのファイルパス、YYYがコンテナ上でのファイルパス。roは読み取り専用の意
で、起動後、chat.hoge.co.jpにアクセスすると、無事、チャットが見れるようになりました。
これで職場で見れるようになると嬉しいなぁ。。。無理かなぁ。。。