Terraform 確認 (2)
ローカルで動作検証してみます。ひとまず docker なリソース確保。mix phx.new . --live --no-ecto しておいて git init しておきます。とりあえず最初の状態な commit を作成して remote 反映まで。
色々な試行錯誤の後
とりあえず github から issue の一覧を取得できたのかどうか。api じゃなくて html コンテンツ戻すやつ、どうやるのかしらと。現時点で盛り込んだ差分情報を以下に列挙しておきます。
config/dev.exs
リスンする IP を 0.0.0.0 に
config :workspace, :giphy, の設定 (host は api.github.com を指すよう修正)
config/prod.exs も修正していますが現状関係ないのでスルー
lib/workspace_web/router.ex
use Terraform の設定
terraformer は Workspace.ReverseProxy.Terraformers.Gipy
/repos な scope の設定
mix.exs
mod: {Workspace.ReverseProxy, []} を application に追加
httpoison と terraform を deps に追加
コントローラの追加
lib/workspace/reverse_proxy の追加
clients/giphy.ex の追加
terraformers/giphy.ex の追加
endpoint.ex、reverse_proxy.ex の追加
このあたり、reverse_proxy の実装とほぼ同じ
html 戻すプロキシ実装にするには?
いったんここまでの差分を commit しておいて検討着手。というか実装再度確認ですね。。現状、router.ex が以下なカンジになってます。
defmodule WorkspaceWeb.Router do
use WorkspaceWeb, :router
use Terraform,
terraformer: Workspace.ReverseProxy.Terraformers.Giphy
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_live_flash
plug :put_root_layout, html: {WorkspaceWeb.Layouts, :root}
plug :protect_from_forgery
plug :put_secure_browser_headers
end
pipeline :api do
plug :accepts, ["json"]
end
scope "/", WorkspaceWeb do
pipe_through :browser
get "/", PageController, :home
end
scope "/repos", WorkspaceWeb do
pipe_through :api
get "/healthcheck", HealthcheckController, :index
get "/foo", FooController, :index
get "/bar", BarController, :index
get "/baz", BazController, :index
end
ので、repos な scope は削除で / な scope は以下な定義?
scope "/", WorkspaceWeb do
pipe_through :browser
end
これで html を全部プロキシする形になるはず?
と思ったら
ステイタス 301 でリダイレクトされてますね。これ、LB からここのプロキシ経由して内部ネットワークのコンテンツ配信、になった時ってどんな設定になるのかしら。あと、何度か同じコンテンツにアクセスしてみるに二度目以降はログ出力されていない。Phoenix が何かをしている風ではなさげです。
curl で確認してみるにブラウザ側の cache で、みたいですね。Phoenix 側で明示的に cache の機構を盛り込まないといけないみたいなので確認してみます。
ConCache
このあたり参考かしらと。
どうも色々微妙で
これならクラウドインフラで用意されてるナニを使う方が話が早いよね、って思っていたら以下を発見。色々確認してみる方向です。
そもそも Phoenix がリクエストをどのように処理しているのか、について等の理解が微妙。
この記事が気に入ったらサポートをしてみませんか?