概要
ふとしたときにリバースプロキシ経由でアプリケーションにアクセスしたくなることがあると思います
そんなときには 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 件のコメント:
コメントを投稿