> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# プロキシ経由で約90秒後に画像呼び出しが切断されますか？

> VPNやプロキシを有効にしてローカル開発を行う際、タイムアウト設定の長さに関わらず、画像リクエストが90〜180秒後にまとめて切断され、それでも課金されることがあります。これはプロキシがデータ送信のない接続を切断しているためです。解決するには、api.apiyi.com をダイレクト（直通）にルーティングしてください。

## 症状

ご自身のコンピューターでVPNやプロキシクライアントを実行しながら画像生成アプリの開発やデバッグを行っている場合（多くの開発者はAIコーディングツールをインターネットに接続させるために常時有効にしています）、以下のような現象が発生することがあります。

* 画像リクエストが `socket hang up`、`ECONNRESET`、`RemoteDisconnected`、`Connection aborted` などの接続エラーで頻繁に失敗する
* クライアント側のタイムアウトを600秒や900秒に設定しているにもかかわらず、リクエストが約**90〜180秒**で切断される
* 複数のリクエストがまとめて遮断されたかのように、**同時に失敗する**ことが多い
* 応答が遅いモデルほど頻繁に影響を受ける（例えば、1画像あたり通常60〜120秒かかる `gpt-image-2-vip` など）
* [呼び出しログ](/ja/faq/call-logs)では、**これらのリクエストのほとんどが成功として記録され、課金されている**

## 簡潔な回答

<Info>
  **これは同時実行数の制限ではなく、APIYIのタイムアウトでもありません。お使いのコンピューター上のプロキシが、一定時間データ通信のない接続を切断しています。**

  画像の生成中は、接続上にデータが一切流れません。画像の生成に時間がかかるほど、プロキシが接続をアイドル状態と見なして切断する可能性が高くなります。`api.apiyi.com` を直接ルーティング（プロキシをバイパス）すれば、問題は解決します。APIYI は中国本土から直接アクセス可能です。
</Info>

## 発生する原因

非ストリーミングの画像リクエストには3つのフェーズがあります：

1. **アップロード**：promptと参照画像が送信され、数秒から数十秒かかります
2. **待機**：サーバーが画像を生成します。通常は60〜200秒かかります。**この間、接続上には一切データが流れません**
3. **ダウンロード**：完成した画像が一括で返却されます

問題となるのはフェーズ2です。リソースを解放するため、プロキシクライアントおよびプロキシサーバーはすべての接続に対してアイドルタイムアウトを設定しています。その時間内に双方向でデータのやり取りがない場合、接続は切断されます。広く利用されているXray / V2Rayコアでは、この設定は`connIdle`であり、デフォルトは300秒ですが、**プロキシサーバーの運用者はこれをはるかに短い値に設定することが可能**であり、お使いのコンピューターからそれを確認・変更することはできません。調査した事例では、この値は約90秒に設定されていました。

その結果：

* **クライアント側のタイムアウト設定では解決できません。** タイムアウト設定はプログラムがどれだけ待機できるかを指定しているに過ぎません。中間のプロキシが先に接続を切断するため、プログラム側からは接続が切断されたようにしか見えません
* **まとめて失敗する理由**：プロキシは通常、タイマーで定期的にチェックを行い、アイドル時間が長すぎる接続を一括で切断します。そのため、画像の生成待ちをしている複数のリクエストが同じ秒に一斉に失敗します
* **チャットやコーディングツールで問題が発生しない理由**：ストリーミングチャットはデータを送信し続けるため、接続がアイドル状態になることはありません。一方、画像生成は何分間もデータを一切送信しません

<Warning>
  **切断されたリクエストも通常は課金対象となります。** リクエストはすでにAPIYIに到達し、生成処理が開始されています。切断されても処理は停止しないため、画像は通常通り生成されて課金されますが、その結果がプログラムに届くことはありません。プログラムのエラー数ではなく、[呼び出しログ](/ja/faq/call-logs)で実際の請求額をご確認ください。
</Warning>

## 確認方法

<Steps>
  <Step title="タイミングを確認する">
    失敗した各リクエストがエラー発生までに実行されていた時間を記録します。所要時間が一定の値（90秒や180秒など）前後に集中しており、複数のリクエストが頻繁に**同一秒**で失敗している場合、ほぼ確実にプロキシのアイドルタイムアウトが原因です。
  </Step>

  <Step title="呼び出しログと比較する">
    [呼び出しログ](/ja/faq/call-logs)で同じ時間帯を確認します。プログラム側で切断が報告されているにもかかわらず、ログ上に成功および課金済みのリクエストとして表示されている場合、APIYI側では画像の生成が完了したものの、クライアントへの接続が切断された状態です。
  </Step>

  <Step title="直接ルートで小規模なバッチを実行する">
    以下で説明するように`api.apiyi.com`へ直接ルーティングし、同じパラメータで10〜20枚の画像を生成します。切断が発生しなくなった場合、プロキシが原因です。
  </Step>
</Steps>

## 解決方法

<Tabs>
  <Tab title="プロキシクライアントでの直接接続ルール（推奨）">
    プロキシクライアントに APIYI 向けの直接接続ルールを追加します。その他の通信は引き続きプロキシを経由するため、AIコーディングツールに影響はありません。

    Clash / Clash Verge / mihomo の場合、設定ファイルの `rules` の先頭に以下を追加します：

    ```yaml theme={null}
    rules:
      - DOMAIN-SUFFIX,apiyi.com,DIRECT
      # ... your existing rules
    ```

    v2rayN などのクライアントの場合は、ルーティング設定の直接接続リストに `apiyi.com` を追加します。

    <Note>
      **TUNモードまたはグローバルモード**では、プロキシがコンピュータ上のすべてのプログラムからのトラフィックをキャプチャするため、コード側からこれをバイパスすることはできません。このような直接接続ルールを設定することが唯一の解決策です。
    </Note>
  </Tab>

  <Tab title="プログラム側でプロキシをバイパスする">
    プロキシがシステムプロキシまたは環境変数プロキシのみの場合（TUNモードはオフ）、プログラム側でスキップできます：

    ```bash theme={null}
    # Set before running your program so APIYI domains bypass the proxy
    # macOS / Linux
    export NO_PROXY="api.apiyi.com,.apiyi.com"
    # Windows PowerShell
    $env:NO_PROXY="api.apiyi.com,.apiyi.com"
    ```

    * **Python `requests` / `httpx`**: これらはシステムプロキシを自動的に読み取ります。無効化するには `trust_env=False` を設定してください。コード例については[スクリプトで502が発生するのに呼び出しログに何も記録されない場合](/ja/faq/proxy-empty-502)を参照してください
    * **Node.js**: 組み込みの `fetch` はデフォルトでシステムプロキシを読み取りません。`HTTPS_PROXY` を `ProxyAgent`、`global-agent` などのライブラリと一緒に使用している場合は、`api.apiyi.com` を除外してください。`axios` の場合は、リクエスト時に `proxy: false` を渡します
  </Tab>

  <Tab title="どうしてもプロキシを使用する必要がある場合">
    設定を変更できるのは、セルフホストのプロキシサーバーのみです。アイドルタイムアウトを600秒以上に引き上げてください（Xray / V2Ray では `policy.levels.<level>.connIdle` です）。他者が管理しているサーバーの場合は設定を変更できないため、直接接続ルートを設定する方が依然として適しています。
  </Tab>
</Tabs>

## サーバーにデプロイした後もこれが発生しますか？

**通常は発生しません。** サーバーは通常プロキシなしで稼働し、APIYIに直接接続するため、プロキシによってアイドル状態の接続が切断されることはありません。これは推奨される本番環境の構成でもあります。中国本土のクラウドサーバーから`api.apiyi.com`に直接アクセスできます。

サーバーとAPIYIの間に他のレイヤーが存在する場合、それらにもアイドルタイムアウトが設定されています。デプロイ時に以下を確認してください。

| レイヤー | 一般的なデフォルト値 | 備考 |
| - | - | - |
| クラウドNATゲートウェイ / ロードバランサー | Azure: 4分、AWS NATゲートウェイ: 350秒 | サーバーにパブリックIPがなくNAT経由で外部通信する場合にのみ適用されます。ほとんどはコンソールで引き上げることができます |
| 自前のNginxリバースプロキシ | `proxy_read_timeout`のデフォルトは60秒 | サービスとAPIYIの間にNginxを配置している場合は、この値を引き上げる必要があります。[APIタイムアウトを回避するにはどうすればよいですか？](/ja/faq/timeout-configuration)を参照してください |
| サーバーにインストールされたプロキシ | 設定に依存 | ローカル開発環境と同じ問題が発生するため、APIYI宛ては直接ルーティングしてください |

1枚の画像は通常60〜200秒以内に完了するため、クラウドNATのデフォルト値を下回ります。独自のリバースプロキシを追加した場合や、サーバー側でもプロキシを経由している場合にのみ、追加の対応が必要になります。

## よくある質問

<AccordionGroup>
  <Accordion title="TCP keepaliveを有効にすることは役立ちますか？">
    クラウドNATゲートウェイに対しては効果があります。keepaliveプローブによって接続がまだアクティブであることをNATに通知できるためです。一方、実際のデータに基づいてアイドル状態を判定するプロキシクライアントに対しては、keepaliveプローブがデータとしてカウントされないため、ほとんど効果がありません。ローカル開発環境の場合は、直接接続ルートを設定することが解決策となります。
  </Accordion>

  <Accordion title="WebコンソールやAIコーディングツールが問題なく動作するのはなぜですか？">
    それらのリクエストはすぐに返るか、出力を継続的にストリーミングするため、接続が90秒以上アイドル状態になることがありません。数分間にわたって何も送信されず、一度にすべての結果が返される画像生成のようなリクエストでのみ、この問題が発生します。
  </Accordion>

  <Accordion title="これは空の502エラーの問題と同じですか？">
    どちらもローカルプロキシが原因ですが、症状が異なります。[空の502エラーのケース](/ja/faq/proxy-empty-502)では、プロキシがボディのない502を返します。今回のケースでは、画像を待機している間に接続が切断され、プログラム側では接続ドロップとして認識されます。解決策はどちらも同じで、APIYIへのリクエストをプロキシ経由にしないことです。
  </Accordion>

  <Accordion title="切断されたリクエストの料金は返金されますか？">
    これらの切断は、APIYIがすでに画像を生成して課金した後に、お客様とAPIYIの間のプロキシで発生します。金額が大きい場合は、時間帯（16:30-17:00 (UTC+8) のようにタイムゾーンを明記）とユーザー名をサポートまでお送りいただければ、呼び出しログを確認いたします。
  </Accordion>

  <Accordion title="これほど長く待たずに呼び出す方法はありますか？">
    画像エンドポイントは現在同期的に結果を返し、タスクIDによるポーリングには対応していません。[非同期の画像APIはありますか？タスクIDで結果を照会できますか？](/ja/faq/image-async-api) をご覧ください。APIYIへ直接ルーティングするように設定すれば、長時間の待機自体は問題になりません。
  </Accordion>
</AccordionGroup>

## 関連ドキュメント

<CardGroup cols={2}>
  <Card title="スクリプトで502が発生するのに呼び出しログに記録がない？" icon="unplug" href="/ja/faq/proxy-empty-502">
    ローカルプロキシによって生成された空の502です。システムプロキシをバイパスすることで解決します
  </Card>

  <Card title="APIの利用にプロキシは必要ですか？" icon="wifi" href="/ja/faq/network-proxy">
    中国本土から直接アクセス可能で、プロキシやVPNは不要です
  </Card>

  <Card title="APIタイムアウトを回避するには？" icon="timer" href="/ja/faq/timeout-configuration">
    タイムアウト設定とレイヤー別のトラブルシューティング
  </Card>

  <Card title="非同期の画像APIはありますか？" icon="clock" href="/ja/faq/image-async-api">
    レスポンスが同期である理由と、非同期にラップする方法
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.