Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
53
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@kgsi

【2018年版】利用前に知って欲しいFirebase Hostingにできること・できないこと

Firebaseは非常に便利なBaaSです。しかしFirebase Hostingは特にですが、そのシンプルさ故に、通常のレンタルサーバでは当たり前にできることができなかったりします。
この案件にはFirebase Hostingを使ってよいのか、別のサービスを使うべきなのか、レンタルサーバを使うべきなのか、という判断の際に必要だった情報を、QA形式でまとめてみました(2018.08時点の情報です)

Q. Basic認証やIP制限はできる?

A. 機能要件によっては可能です。下記の参考記事ではFunctionsを通して、ベーシック認証やIP制限をかけています。しかし、index.htmlをhostingのrootに配置した場合、静的ファイルが優先的に表示・実行されるHostingの仕様上、「example.com」では制限がかかったように見えますが、「example.com/index.html」ではファイルが見えてしまいます。厳密に対応する場合は制限をかけたいディレクトリを一階層下げる、などのハックが必要です。
また、index.htmlを起点としたSPA(vue-routerのHTML5 History モードなど)構成の場合、Functionsを通してルーティング処理を行ってbasic-auth-connect等を使う、といったバックエンド処理が必要になります。

参考

Q. 独自SSLはつかえるのか?

A. 使えません。Firebase Hostingでは自動でSSLが設定されますが、カスタムのSSLを設置することはできません。どうしても使いたい場合は、例えばfirebaseにカスタムドメインは設定せずに外部CDNサービスを通して配信する、といった実装をする必要があります。そんな実装にすると当然見通しも悪くコスパもよろしくないので、オススメはしません。

Q. functionsとルートディレクトリに置いたSPAファイルとは共存できる?

A. できます。例えばbigben配下でfunctionsを実行し、ルートディレクトリでSPAを実行するとした場合、firebase.jsonは以下のように設定します(Vue-routerのヒストリーモードで動作確認)

{
  "hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "/bigben/**", 
        "function": "bigben"
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

Q. リダイレクトはできる?

A. できます。firebase.jsonを編集することで可能です。詳しくは公式ドキュメントを参照してください。

Hosting 動作をカスタマイズする

Q. URLの正規化(ドメインの統一)は可能?

A. Firebase Consoleでその設定を行うことはできません。公式にも問い合わせましたが、割り当てられた初期ドメインを非公開にする術は現状なく、canonicalタグを使った正規化で対処して、という回答をもらいました。ただ、タグを入れるだけでは当然リダイレクトしてくれないので、正確に対応するならhost名から判定して、location.hrefで擬似リダイレクトをする、Functionsを通してリダイレクトをする、などの対策が必要です。

Q. ページの動的生成は可能?

A. 可能です。Functionsを通してページ生成を行います。expressなどのサーバソフトウェアを使うことで簡単に生成できます。

Q. deployしたデータを削除・非公開にするには?

A. Firebase Consoleで削除できますが、1つしか無いリビビジョンを削除・非公開にすることはできません。最も手早い非公開方法としては以下コマンドを実行することです。

$ firebase hosting:disable

diableを実行することでHostingの設定自体が消えることはありません。deployしたデータのみが消去されます。再度公開したい場合は、再度deployを実行してください。

Q. FTP/FTPSは使ってアップロードできる?

A. 使えません。ファイルのアップロード方法はコマンドのみです。

Q. deployする際に、deploy先の切り替え(開発・本番環境など)ができる?

A. できます。firebase useコマンドでプロジェクトのエイリアスを作成し、エイリアスに対してdeployコマンドを実行することで切り替えが可能です。

# プロジェクトのエイリアスを設定できる。ここでは"stating"と想定
firebase use --add

# staging環境にdeployさせるコマンド
firebase deploy -P staging

その他参考記事

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
53
Help us understand the problem. What are the problem?