---
description: Route Capawesome Cloud Live Update API traffic through a reverse proxy you control — serve the API from your own domain in Capacitor and Cordova apps.
title: Proxy Live Update API Requests - Capawesome
image: https://capawesome.io/docs/assets/images/social/cloud/live-updates/request-proxying.png
---

[ Skip to content](#proxy-api-requests) 

[ 🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode.](/blog/announcing-the-capacitor-vault-plugin/) 

* [  SDKs ](/docs/sdks/)
* [  Formbricks ](/docs/sdks/capacitor/formbricks/)
* [  Geocoder ](/docs/sdks/capacitor/geocoder/)
* [  Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [  Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [  libSQL ](/docs/sdks/capacitor/libsql/)
* [  Live Update ](/docs/sdks/capacitor/live-update/)
* [  Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [  Media Session ](/docs/sdks/capacitor/media-session/)
* [  ML Kit ](/docs/sdks/capacitor/mlkit/)
* [  Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [  NFC ](/docs/sdks/capacitor/nfc/)
* [  OAuth ](/docs/sdks/capacitor/oauth/)
* [  Pedometer ](/docs/sdks/capacitor/pedometer/)
* [  Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [  PostHog ](/docs/sdks/capacitor/posthog/)
* [  Printer ](/docs/sdks/capacitor/printer/)
* [  Purchases ](/docs/sdks/capacitor/purchases/)
* [  RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [  Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [  Screenshot ](/docs/sdks/capacitor/screenshot/)
* [  Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [  Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [  Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [  Share Target ](/docs/sdks/capacitor/share-target/)
* [  Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [  SQLite ](/docs/sdks/capacitor/sqlite/)
* [  Superwall ](/docs/sdks/capacitor/superwall/)
* [  Torch ](/docs/sdks/capacitor/torch/)
* [  Vault ](/docs/sdks/capacitor/vault/)
* [  Wifi ](/docs/sdks/capacitor/wifi/)
* [  Zip ](/docs/sdks/capacitor/zip/)
* [  Cordova ](/docs/sdks/cordova/)
* [  Cloud ](/docs/cloud/)
* [  Manage Devices ](/docs/cloud/live-updates/devices/)
* [  Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [  Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [  FAQ ](/docs/cloud/live-updates/faq/)
* [  Native Builds ](/docs/cloud/native-builds/)
* [  Set Up Environments ](/docs/cloud/native-builds/environments/)
* [  Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [  Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [  Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [  Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [  Use pnpm or Yarn ](/docs/cloud/native-builds/package-managers/)
* [  Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [  Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [  Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [  Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [  Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [  Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [  Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [  FAQ ](/docs/cloud/native-builds/faq/)
* [  App Store Publishing ](/docs/cloud/app-store-publishing/)
* [  Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [  Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [  Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [  FAQ ](/docs/cloud/app-store-publishing/faq/)
* [  Automations ](/docs/cloud/automations/)
* [  Reference ](/docs/cloud/automations/reference/)
* [  Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [  FAQ ](/docs/cloud/automations/faq/)
* [  Assist ](/docs/cloud/assist/)
* [  CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [  Webhooks ](/docs/cloud/webhooks/)
* [  Integrations ](/docs/cloud/integrations/)
* Account
* [  Organization ](/docs/cloud/organizations/)
* [  Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [  Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [  Billing ](/docs/cloud/organizations/billing/)
* [  License Keys ](/docs/cloud/license-keys/)
* [  AI ](/docs/ai/)
* [  Insiders ](/docs/insiders/)
* [  Billing & Plans ](/docs/insiders/billing-and-plans/)
* [  FAQ ](/docs/insiders/faq/)
* [  License ](https://capawesome.io/legal/eula/)
* [  Support ](/docs/support/)
* [  Contributing ](/docs/contributing/)
* Contributing code
* [  Code of Conduct ](/docs/contributing/code-of-conduct/)
* [  Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [  Blog ](/blog/)
* Categories

# Proxy API Requests[¶](#proxy-api-requests "Permanent link")

By default, the Live Update SDK talks to the Capawesome Cloud API directly. If you'd rather keep that traffic on infrastructure you control, you can put a reverse proxy in front of the API and point the SDK at your own domain instead. The proxy forwards every request to Capawesome Cloud and returns the response, so updates keep working exactly as before.

## Why proxy requests?[¶](#why-proxy-requests "Permanent link")

Running your own proxy is optional, but it gives you a few things:

* **Own domain**: Serve the API under a hostname you control instead of `api.cloud.capawesome.io`.
* **Observability**: Log, inspect, and monitor update traffic before it leaves your network.
* **Network control**: Apply your own firewall, WAF, or access rules to the traffic.
* **IP anonymization**: Strip client IP addresses before they reach Capawesome Cloud (Enterprise plan only — see [IP anonymization](#ip-anonymization)).

## How it works[¶](#how-it-works "Permanent link")

The Live Update SDK sends all of its requests to a single host. Once you point it at your proxy, the flow looks like this:

1. The app sends update requests to your domain (for example, `api.example.com`).
2. Your reverse proxy forwards each request to `https://api.cloud.capawesome.io`.
3. Capawesome Cloud responds, and your proxy passes the response back to the app.

## Requirements[¶](#requirements "Permanent link")

You can build the proxy with any technology — nginx, Caddy, a cloud load balancer, an edge function, whatever fits your stack. Whichever you choose, it must:

* **Terminate HTTPS**: Serve your domain over HTTPS so the SDK can connect securely.
* **Forward to the API**: Proxy every request to `https://api.cloud.capawesome.io` and send `api.cloud.capawesome.io` as the `Host` header.
* **Forward the client IP**: Set the `X-Real-IP` header to the original client's IP address.

The last point matters more than it looks:

Forward the client IP

Capawesome Cloud applies rate limits per client IP based on the `X-Real-IP` header. If your proxy doesn't forward it, every request appears to come from the proxy itself, and all of your users share a single rate limit. Always set `X-Real-IP` to the real client IP — unless you're on the Enterprise plan and have set up [IP anonymization](#ip-anonymization).

## Reference implementation[¶](#reference-implementation "Permanent link")

To get you started, we maintain an open-source [Cloud API Proxy](https://github.com/capawesome-team/docker-cloud-api-proxy) repository. It's a minimal nginx-based Docker image — a `Dockerfile` and an nginx config — that forwards everything to the Capawesome Cloud API with the required headers already in place.

The relevant part of the nginx configuration looks like this:

default.conf

`[](#%5F%5Fcodelineno-0-1)server {
[](#%5F%5Fcodelineno-0-2)    listen 80;
[](#%5F%5Fcodelineno-0-3)
[](#%5F%5Fcodelineno-0-4)    server_name api.example.com;
[](#%5F%5Fcodelineno-0-5)
[](#%5F%5Fcodelineno-0-6)    location / {
[](#%5F%5Fcodelineno-0-7)        proxy_pass https://api.cloud.capawesome.io;
[](#%5F%5Fcodelineno-0-8)        proxy_ssl_server_name on;
[](#%5F%5Fcodelineno-0-9)
[](#%5F%5Fcodelineno-0-10)        proxy_set_header Host "api.cloud.capawesome.io";
[](#%5F%5Fcodelineno-0-11)        proxy_set_header X-Real-IP $remote_addr;
[](#%5F%5Fcodelineno-0-12)        proxy_set_header X-Forwarded-For $remote_addr;
[](#%5F%5Fcodelineno-0-13)        proxy_set_header X-Forwarded-Proto $scheme;
[](#%5F%5Fcodelineno-0-14)    }
[](#%5F%5Fcodelineno-0-15)}
`

Replace `api.example.com` with your own domain and terminate TLS in front of the container in production (for example, via a load balancer or a reverse proxy such as Caddy or Traefik). This image is only a reference — you're free to implement the proxy with any tooling you prefer, as long as it meets the [requirements](#requirements) above.

## Configure the SDK[¶](#configure-the-sdk "Permanent link")

Once your proxy is reachable over HTTPS, point the SDK at it by setting the `serverDomain` option to your domain:

CapacitorCordova

capacitor.config.json

`[](#%5F%5Fcodelineno-1-1){
[](#%5F%5Fcodelineno-1-2)  "plugins": {
[](#%5F%5Fcodelineno-1-3)    "LiveUpdate": {
[](#%5F%5Fcodelineno-1-4)      "serverDomain": "api.example.com"
[](#%5F%5Fcodelineno-1-5)    }
[](#%5F%5Fcodelineno-1-6)  }
[](#%5F%5Fcodelineno-1-7)}
`

config.xml

`[](#%5F%5Fcodelineno-2-1)<preference name="SERVER_DOMAIN" value="api.example.com" />
`

The `serverDomain` option takes a bare domain — no scheme and no path. The SDK always connects over HTTPS, so make sure your proxy is served over HTTPS as well.

## IP anonymization[¶](#ip-anonymization "Permanent link")

Some teams don't want client IP addresses leaving their own infrastructure at all. On the **Enterprise** plan, you may drop the `X-Real-IP` header in your proxy so that no client IP reaches Capawesome Cloud. Because every request then arrives from your proxy's IP, we configure a dedicated, higher rate limit for that IP so your users aren't throttled as a single client.

[Contact our sales team](/contact-sales/) to enable IP anonymization for your proxy.

## Next steps[¶](#next-steps "Permanent link")

* [Self-Host Bundles](/docs/cloud/live-updates/self-hosting/) — keep your bundles on your own server while Capawesome Cloud handles update checks.
* [Privacy & Data Residency](/docs/cloud/live-updates/privacy/) — see what data is collected and how to choose an EU-based server location.
* [Get Started](/docs/cloud/live-updates/setup/) — install and configure the Live Update SDK.

June 13, 2026 

 Back to top 