はりうすブログ (のすけのメモ)

湘南にある小さな会社 代表 ”のすけ”のブログです

Nuxt.js asyncDataを使ってAPIアクセスしたらconnect ETIMEDOUTになった

Nuxt.js asyncDataを使ってAPIアクセスしたらconnect ETIMEDOUTになった


結論

DNSの名前解決に失敗している

理由

asyncDataはリクエスト元がサーバーサイドなので、自分自身のサーバーに対してリクエストしているのだけれど、そのリクエスト指定がフルのURL(https://domain-name.com/api/xxxxx)のような形だったのですが

そのサーバーの前段にconohaのロードバランサーを入れていました。
その結果、DNSの名前解決先としてはロードバランサーのIPを示しているため

結果、ロードバランサーの後ろにあるNuxt.jsサーバーからロードバランサーapiリクエストが
飛ぶという問題でした

解決策

APIサーバーを別に立てて、別ドメインにしました。
Firebaseのfunctionsが便利でしたので、functionsにnodeサーバーでAPIを構築し解決です。