Phoenix.Endpoint configuration

2018/4/4 posted in  Elixir comments

docs: https://hexdocs.pm/phoenix/Phoenix.Endpoint.html#module-runtime-configuration

配置主要有两类 Compile-time configurationRuntime configuration

Compile-time configuration 表示只能编译时读取,运行时不能修改

Runtime configuration运行时配置,是应用启动后才可以读取的,使用config/2 函数

YourApp.Endpoint.config(:port)
YourApp.Endpoint.config(:some_config, :default_value)

Compile-time configuration

  • :code_reloader 是否启用代码重新加载功能
  • :debug_errors 设置为true,则使用 Plug.Debugger 处理应用失败,建议仅在开发时将其设置为true,因为它允许在调试期间列出应用程序源代码
  • :render_errors 应用出错时,渲染模板配置,比如在HTML request,出现500错误时 render("500.html", assigns)渲染模板处理 默认配置是[view: MyApp.ErrorView, accepts: ~w(html), layout: false]

Runtime configuration

  • :http HTTP server 配置,现在默认使用Cowboy,Cowboy选项 Plug.Adapters.Cowboy
  • :https HTTPS server配置,Cowboy选项 Plug.Adapters.Cowboy
  • :force_ssl 强制使用https,Plug.SSL,默认设置strict-transport-security header,强制浏览器使用https
  • :url 用于在整个应用程序中生成URL的配置,有 host, :scheme, :path, :port 的配置

https 配置示例

certbot ssl配置 https://certbot.eff.org

config :books, BooksWeb.Endpoint,
  load_from_system_env: false,
  url: [host: "example.com", port: 443],
  # http: [port: 80],
  force_ssl: [hsts: true],
  https: [:inet6,
          port: 443,
          keyfile: "/etc/letsencrypt/live/example.com/privkey.pem",
          cacertfile: "/etc/letsencrypt/live/example.com/chain.pem",
          certfile: "/etc/letsencrypt/live/example.com/cert.pem"]

配置 force_ssl: [hsts: true] 强制https

配置 http: [port: 80] 同时支持 http & https