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 がリクエストをどのように処理しているのか、について等の理解が微妙。

この記事が気に入ったらサポートをしてみませんか?