2019年8月21日水曜日

docker の nginx で簡単リバースプロキシを構築する

概要

ふとしたときにリバースプロキシ経由でアプリケーションにアクセスしたくなることがあると思います
そんなときには nginx コンテナを使ってリバースプロキシをサクっと構築することができます

環境

  • macOS 10.14.6
  • docker 19.03.1

アプリ作成

  • bundle init
  • vim Gemfile
gem "sinatra"
  • bundle install --path vendor
  • vim app.rb
require 'sinatra'

set :bind, '0.0.0.0'

get '/' do
  'ok'
end
  • bundle exec ruby app.rb
  • curl localhost:4567

=> ok

というアプリを nginx のリバースプロキシ経由でアクセスできるようにします

nginx コンテナ作成 

  • vim default.conf
server {
  listen 80;
  location / {
    proxy_pass http://docker.for.mac.host.internal:4567;
  }
}
  • docker run -d -p 80:80 -v $(pwd)/default.conf:/etc/nginx/conf.d/default.conf --name web nginx
  • curl localhost

=> ok

という感じで簡単にリバースプロキシ経由でアプリにアクセスできるようになります

解説

default.conf にプロキシするアプリの情報を記載するだけです
今回はコンテナからホストマシンのポートに対してアクセスするのでアプリケーションがバインドしている IP を 0.0.0.0 などにしてコンテナからアクセスできるようにする必要があります

また docker for Mac の場合 docker.for.mac.host.internal という名前でホストマシン側にアクセスできますが Ubuntu などの場合は名前でアクセスできないのでホストマシンの IP などを指定するようにしましょう

0 件のコメント:

コメントを投稿