注意:この記事は特定のソフトウェアやサービスに限定せず、リバースプロキシとの疎通において一般的な問題や解決方法を記載しています。また、ApacheやNGINXなどのオープンソースのソフトウェア、AWSやCloudflareなど特定のCDNサービスに伴う詳細な実装サポートをご希望の場合は、Enterpriseプランの窓口でお問い合わせください。
技術要件・制約事項
通信およびネットワーク要件
リバースプロキシサーバーとStudioオリジンサーバー間のネットワークは確立していること
プロキシサーバーからStudioのドメイン(https://[プロジェクト値].studio.site)への通信が正常に行えること(curlやnetstat等を利用して確認)
TCPポート443(HTTPS)がファイアウォールで許可されていること
リバースプロキシサーバ側で必要ならログレベルを上げて詳細確認ができること
ヘッダー要件
Studioへのリクエスト時、Hostヘッダーには必ずStudioオリジンのドメインを指定すること
「x-studio-proxy-key」ヘッダーには、Studioが発行した適切なプロキシキーを含めること
転送ルール・パス要件
リバースプロキシで設定する転送ルールは、/[ディレクトリ]からhttps://[プロジェクト値].studio.site/[ディレクトリ]へ正確にマッピングされていること
Studioプロジェクト側に該当のパスやページが存在し、公開設定になっていること
キャッシュ・パフォーマンス要件
検証時・運用時ともにリバースプロキシのキャッシュポリシーは、無効化されていることを推奨しています。
エラー応答などをキャッシュすると動作不良につながります。
リソース・MIMEタイプ要件
Studioページのレンダリングで必要となる/_nuxt配下の静的リソースも必ず転送設定すること
/_nuxt/entry.[ハッシュ値].js等のリソースがリクエストされた際、Content-Typeヘッダーに “application/javascript” が正しく付与される必要があります。MIMEタイプの設定はリバースプロキシ側で見直しが必要な場合があります。
Studio側アップデートにより/_nuxt内のハッシュ値は随時変更されるため、ワイルドカード等での柔軟なパス対応が望ましいです。
トラブルシューティング・FAQ
Studioにリクエストが到達しません
Studioにリクエストが到達しません
Studioへの転送時に「502 Bad Gateway」や「503 Service Unavailable」が返却される場合、以下の観点でご確認ください。
(1)通信・ネットワークの確立
リバースプロキシサーバーからStudioサイト(https://[プロジェクト値].studio.site)への通信が可能であることをcurl等で確認してください。
必要に応じてnetstatコマンド等で、TCPコネクション(特にポート443)がファイアウォールで許可され、正常に確立できているかをチェックしてください。
詳細な状況を確認するには、リバースプロキシサーバーのログレベルを一時的に上げることも有効です。
(2)ヘッダー設定の適切性
HostヘッダーがStudioオリジンのドメインに正しく設定されているか確認してください。
x-studio-proxy-keyヘッダーには、Studioより発行された正しいプロキシキーが設定されている必要があります。
Studioから404 Not Foundが返されます
Studioから404 Not Foundが返されます
Studioへの疎通は出来ており、「404 Not Found」が返却される場合、以下の観点でご確認ください。
(1)転送ルールの確認
リバースプロキシの転送設定が正しく行われ、リクエストが「https://[プロジェクト値].studio.site/[転送ディレクトリ]」へ転送されているか確認してください。
(2)ページパスと公開状態
Studioプロジェクト内に、該当の転送先ページパスが存在し、かつ公開済みであることを確認してください。
(3)キャッシュの無効化
リバースプロキシのキャッシュが無効化されていることを確認してください。キャッシュ有効時はエラー応答が保存される場合があります。
200で正常に返されますが白紙になります
200で正常に返されますが白紙になります
Studioから正常なレスポンスはあり、ページが白紙で表示されている場合、以下の観点でご確認ください。
(1) /_nuxtディレクトリの転送
ページ表示に必要な/_nuxt配下のリソースファイルも必ず転送されているか確認してください。
(2)Content-Typeヘッダーの設定
/_nuxt/entry.[ハッシュ値].jsなどのファイルでContent-Typeヘッダーが“application/javascript”になっているか、ご確認ください。必要に応じてMIMEタイプ設定も見直す必要があります。
(3)キャッシュの無効化
リバースプロキシのキャッシュポリシーが無効になっているかを確認してください。有効の場合はエラー応答がキャッシュされることがあります。
