プライバシーの都合上デプロイしたドメインをxxx.comとしています。
解決したいこと
AWSのECSにNext.jsをデプロイしたところ、/favicon.icoをはじめとするpublicフォルダの内容が全て404になってしまいます。404はsrc/pages/404.tsxでカスタムページにしてあります。
ソースコード
src/pages/_document.tsx
tsx
1import { Head, Html, Main, NextScript } from 'next/document'; 2 3export default function Document() { 4 return ( 5 <Html> 6 <Head> 7 {/* Faviconはちゃんと設定したはず、、 */} 8 <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> 9 </Head> 10 <body> 11 <Main /> 12 <NextScript /> 13 </body> 14 </Html> 15 );
環境
共通
Next.js: 12.1.6
TypeScript: 4.8.4
開発環境
Docker: 20.10.6
Docker compose: v2.6.0
本番環境
全てAWS、Terraformで管理
ECRから取得したNext.jsのビルド済みイメージをECSで起動
ECSはFargate 1.4 on Linux
Route53にALBのDNSを登録
ALBはhttpをhttpsにリダイレクト
httpsはhost_headerがxxx.comという条件付きでターゲットグループにforward
ターゲットグループはECSのサービスのNext.jsコンテナの8000ポートに結びついている
試したこと
- 別タブで
xxx.com/favicon.ico
などにアクセス
-> カスタムした404ページが表示されてしまう
- 開発環境では404ページ・publicフォルダの画像全て問題なく取得できる。
next build
を行った後にローカルでnext start
で起動した本番環境に近いアプリケーションにおいても問題はなかったnext build
時のwarningなどはなかった
と言うことはおそらくAWSの設定に問題があるのでは無いかと疑っています。
Content-Typeが制限されてるとか?
何か心当たりがありましたらご教授いただけますと幸いです。
あなたの回答
tips
プレビュー