NuxtのWebサイトをFull Static Generationで再構築してみました。
Nuxt の Web サイトを Full Static Generation で再構築してみました。私のサイトの場合、問題になったのはサーバサイドの処理をどのように回避するかでした。またリンクされていないページは、クローニング処理されないので、従来通り一手間かけてファイルを生成します。
Nuxt は、バージョンをアップするたびに機能が充実してきます。今回は、Full Static Generation を使ってみたいと思います。やはり目玉は、nuxt generate コマンドのみで動的ページを作成することでしょうか。今まで Nginx フロントエンドサーバと Nuxt サーバのバックエンドサーバの構成でした。全て Nginx のフロントエンドサーバ側にコンテンツを配置し、バックエンドサーバは廃止したいと思います。
IPv6 接続されたときは connected IPv6 と表示させる。
IPv6 で接続されたときは、ヘッダーメニューの右側に connected IPv6 と表示させていました。この情報は、最初にクライアントから送られてくるヘッダ情報の x-forwarded-for に設定されている IP アドレスをみて判断していました。このヘッダー情報が取れるのはサーバサイド側のみですので、今回はこの方式は使えなくなります。試しに generate するとやっぱりエラーとなりました。
静的なサイトにするために困りました。結局どうやって判断するか、そういえば、IPv6 に対応した時、Nginx の設定に IPv6 アドレスからも受け付けるように listen に追加しました。今回発想を変え、シンプルに Niginx の listen で IPv6 用のコンテンツと IPv4 のコンテンツに分けることにしました。当初、画像のみ IPv6 かそうでないかに切り分けることを考えてましたが、IPv6 または IPv4 で接続したか Google アナリティクスで分析したいので、各ページに GID を設定するので、シンプルに IPv6 のサイトと IPv4 のサイトを用意することにしました。
当初の Nginx の設定を改造することにしました。
=$Nuxt のバックエンドサーバを廃止と共に IPv6 と IPv4 用にサイトを分けました。
記事をリロードすると 404 のエラーが出てしまう。
generate コマンドで静的ファイルを出力した後に nginx に配置してテストしてみると記事一覧や記事一覧のリンクからの記事は読めますが、記事表示した後にリロードしてみると 404 not found とエラーが出てしまいます。記事は json ファイルで db_xxx に格納されていて記事一覧からハッシュキーで読むようです。リロード後や直接リンクでは記事のファイルを検索する script がないので記事を取得できないと思われます。流石にリンクされていないページは作成されていなかったので手動で articles 以下にある記事を generate するようにしました。
IPv6 と IPv4 用サイト作成の準備
今回、dotenv も標準で簡単に使えるようになってました。今回 IPv6 と IPv4 用に.evn ファイルを設定してそれに合わせたサイトを作るようにしました。
.env ファイル
.env で設定した値は以下のように$config.変数で利用することができます。IPv6 が True のときは、IPv6 用の画像を出力するようにしています。
それぞれ IPv6 サイトと IPv4 サイト別に出力したいので nuxt.config.js ファイルをそれぞれ用意します。出力先コマンドでできないのかなぁ・・・・多分やり方あるんですよね。
package.json ファイルにサイト出力用コマンドを追加しときます。合わせて start コマンドもそれぞれ用意します。
IPv6 と IPv4 用のサイトの作成とテスト
準備ができましたので、generate コマンドで IPv6 と IPv4 用のサイトを作成したいと思います。
IPv6 用サイト unit1 と IPv4 用サイト unit2 が作成されました。ローカル環境で静的ファイルのチェックすることも Nuxt start で可能となりました。
本当に楽になりました。通常ならば nuxt generate だけで静的コンテンツが作成できて、nuxt start でそのまま内容も確認できます。あとは、Nginx のサイトに配置して完了です。