Strict-Transport-Security - HTTP | MDN

HTTP の Strict-Transport-Security レスポンスヘッダー (しばしば HSTS と略されます) は、ウェブサイトがブラウザーに HTTP の代わりに HTTPS を用いて通信を行うよう指示するためのものです。

max-age=<expire-time>

秒単位で、そのサイトに HTTPS だけで接続することをブラウザーが記憶する時間です。

includeSubDomains 省略可

省略可能で、この引数が指定されると、この規則がサイトのすべてのサブドメインにも適用されます。

preload 省略可

詳しくは Strict Transport Security のプリロード を参照してください。仕様書で定義されているものではありません。

Rails HSTS 設定

Railsでも HSTS の設定が可能。このへんのHSTSまわりの設定はどうやら Rails 5 でが追加された模様。

config.ssl_options = { hsts: { preload: true } }

Rails 5 adds more control to fine tuning SSL usage | BigBinary Blog

Rails の force_ssl のリダイレクト除外

Railsでforce_ssl=trueにするとすべてのアクセスが https へとリダイレクトされてしまうが、SSLアクセラレーション効かせたロードバランサーの配下のサーバーへのヘルスチェック時に不便となる。

よって一部のヘルスチェックパスを除外する必要があるが、下記の通り exclude オプションを付与することで自動redirectを除外することができる。

TLS redirect: Permanently redirects http:// requests to https:// with the same URL host, path, etc. Enabled by default. Set config.ssl_options to modify the destination URL (e.g. redirect: { host: “secure.widgets.com”, port: 8080 }), or set redirect: false to disable this feature.

Requests can opt-out of redirection with exclude:

config.ssl_options = { redirect: { exclude: -> request { /healthcheck/.match?(request.path) } } }

Cookies will not be flagged as secure for excluded requests.

ref. ActionDispatch::SSL | RailsDoc(β)