میزبانی برنامه Firebase را به یک شبکه VPC متصل کنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
باطن Firebase App Hosting شما می تواند به یک شبکه مجازی خصوصی Cloud (VPC) متصل شود. این به پشتیبان Firebase App Hosting شما اجازه میدهد به خدمات باطنی که با استفاده از آدرسهای IP عمومی قابل دسترسی نیستند، مانند Cloud SQL، Spanner، Cloud Memorystore، Compute Engine یا میکروسرویسهای داخلی Kubernetes دسترسی پیدا کند.
دسترسی VPC فقط در زمان اجرا (از ظرف Cloud Run شما) و نه در زمان ساخت ( Cloud Build ) در دسترس است.
نحوه اتصال به شبکه VPC را انتخاب کنید
خروج مستقیم VPC : سادهتر، سریعتر و ارزانتر. از یک آدرس IP در هر ظرف استفاده می کند. برای بیشتر موارد استفاده توصیه می شود.
اتصال دهنده های بدون سرور : آدرس های IP را برای برنامه های بزرگتر جمع می کند. نیاز به پرداخت برای VM اساسی دارد. برای جزئیات قیمت به "دسترسی VPC بدون سرور" در صفحه قیمت گذاری VPC مراجعه کنید.
در apphosting.yaml پیکربندی کنید
از نقشه vpcAccess در فایل apphosting.yaml خود برای پیکربندی دسترسی استفاده کنید. از یک نام شبکه/کانکتور کاملاً واجد شرایط یا یک شناسه استفاده کنید. استفاده از شناسه ها امکان جابجایی بین محیط های صحنه سازی و تولید با اتصالات/شبکه های مختلف را فراهم می کند.
پیکربندی خروج مستقیم VPC ( apphosting.yaml ):
runConfig:vpcAccess:egress:PRIVATE_RANGES_ONLY# Default valuenetworkInterfaces:# Specify at least one of network and/or subnetwork-network:my-network-idsubnetwork:my-subnetwork-id
پیکربندی اتصال دهنده بدون سرور ( apphosting.yaml ):
مثال: از برنامه Next.js به Memorystor for Redis متصل شوید
سیستمهای ذخیرهسازی مانند Redis یا Memcached معمولاً برای ایجاد یک لایه ذخیره سریع داده برای یک برنامه استفاده میشوند. این مثال به شما نشان میدهد که چگونه میتوانید Memorystore را برای Redis در همان پروژه Google Cloud به عنوان باطن Firebase App Hosting خود راهاندازی کنید و با استفاده از Direct VPC egress به آن متصل شوید.
مرحله 0: یک Memorystor برای نمونه Redis ایجاد کنید
مطمئن شوید که همان پروژه ای که برای Firebase App Hosting استفاده می کنید انتخاب شده است.
اگر نمی توانید به این صفحه دسترسی پیدا کنید، مطمئن شوید که صورتحساب برای پروژه شما فعال است و Memorystore API را فعال کرده اید.
Create Instance را انتخاب کنید.
نمونه جدید را با تنظیمات دلخواه خود پیکربندی کنید. در اینجا چند نمونه از مقادیر است که می توانید استفاده کنید:
my-redis-cache در Instance ID وارد کنید.
Redis cache در قسمت نمایش نام وارد کنید.
Basic را در زیر انتخابگر ردیف انتخاب کنید. سطح پایه یک گره Redis مستقل را مشخص می کند، برخلاف لایه استاندارد، که از یک گره مشابه برای پشتیبان گیری از داده های شما استفاده می کند.
منطقه باطن App Hosting خود را از انتخابگر منطقه انتخاب کنید. مطمئن شوید که این مقدار را برای مطابقت با منطقه باطن خود تنظیم کنید.
از انتخاب منطقه یکی را انتخاب کنید.
5 را زیر ظرفیت وارد کنید. این ظرفیت نمونه شما را روی 5 گیگابایت تنظیم می کند.
5.0 در نسخه (توصیه می شود) انتخاب کنید.
پیش فرض را از انتخابگر شبکه مجاز انتخاب کنید.
مرحله 1: apphosting.yaml با شناسه شبکه VPC خود به روز کنید
مرحله 2: متغیرهای محیطی را اضافه کنید که برنامه شما را به Redis هدایت می کند
اطلاعات اتصال (میزبان و پورت) را در برگه «اتصالات» نمونه Memorystore برای Redis در کنسول Google Cloud پیدا کنید.
با متغیرهای محیطی REDISPORT و REDISHOST به Redis متصل شوید. این موارد را با استفاده از مقادیر میزبان و پورت از کنسول Google Cloud در apphosting.yaml تنظیم کنید:
env:# Sample only. Use actual values provided by Memorystore-variable:REDISPORTvalue:6379-variable:REDISHOSTvalue:10.127.16.3
از کد خود به حافظه پنهان redis خود دسترسی پیدا کنید. از متغیرهای محیطی که در مرحله قبل پیکربندی شده اند استفاده کنید. به عنوان مثال، در اینجا نحوه خواندن از حافظه پنهان در کنترل کننده مسیر Next.js آمده است:
src/lib/redis.js
import{createClient}from"redis";// Set these environment variables in apphosting.yamlconstREDISHOST=process.env.REDISHOST;constREDISPORT=process.env.REDISPORT;letredisClient;exportasyncfunctiongetClient(req,res){// Only connect if a connection isn't already availableif(!redisClient){redisClient=awaitcreateClient(REDISPORT,REDISHOST).on("error",(err)=>console.error("Redis Client Error",err)).connect();}returnredisClient;}
مرحله 4 (اختیاری): برنامه خود را برای توسعه محلی پیکربندی کنید
شبیهساز Firebase App Hosting میتواند مقادیر را با استفاده از apphosting.emulator.yaml لغو کند. در اینجا، می توانید مقدار REDISHOST را تغییر دهید تا به localhost اشاره کند تا بتوانید با استفاده از نصب محلی Redis به صورت محلی توسعه دهید.
تاریخ آخرین بهروزرسانی 2025-08-08 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-08 بهوقت ساعت هماهنگ جهانی."],[],[],null,["\u003cbr /\u003e\n\nYour Firebase App Hosting backend can connect to a [Virtual Private Cloud\n(VPC)](https://cloud.google.com/vpc/docs) network. This allows your\nFirebase App Hosting backend to access backend services not accessible using\npublic IP addresses, such as Cloud SQL, Spanner, Cloud Memorystore,\nCompute Engine, or Kubernetes internal microservices.\n\nVPC access is only available at runtime (from your Cloud Run\ncontainer), not at build time (Cloud Build).\n\nChoose how to connect to a VPC network\n\n- [Direct VPC\n Egress](https://cloud.google.com/run/docs/configuring/vpc-direct-vpc): Simpler, faster, and less expensive. Uses one IP address per container. Recommended for most use cases.\n- [Serverless\n Connectors](https://cloud.google.com/vpc/docs/serverless-vpc-access): Pools IP addresses for larger applications. Requires payment for the underlying VM. See \"Serverless VPC Access\" in the [VPC pricing page](https://cloud.google.com/vpc/network-pricing) for pricing details.\n\nConfigure in `apphosting.yaml`\n\nUse the `vpcAccess` mapping in your `apphosting.yaml` file to configure access.\nUse either a fully qualified network/connector name or an ID. Using IDs allows\nfor portability between staging and production environments with different\nconnectors/networks.\n\nDirect VPC Egress Configuration (`apphosting.yaml`): \n\n runConfig:\n vpcAccess:\n egress: PRIVATE_RANGES_ONLY # Default value\n networkInterfaces:\n # Specify at least one of network and/or subnetwork\n - network: my-network-id\n subnetwork: my-subnetwork-id\n\nServerless Connector Configuration (`apphosting.yaml`): \n\n runConfig:\n vpcAccess:\n egress: ALL_TRAFFIC\n connector: connector-id\n\nExample: connect to Memorystore for Redis from a Next.js app\n\nCaching systems like Redis or Memcached are commonly used to build a fast data\ncaching layer for an app. This example shows you how to set up\n[Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview)\nin the same Google Cloud project as your Firebase App Hosting backend and\nconnect to it using\n[Direct VPC egress](https://cloud.google.com/run/docs/configuring/vpc-direct-vpc).\n\nStep 0: Create a Memorystore for Redis instance **Note:** you may also be prompted to create a [service connection policy](https://cloud.google.com/vpc/docs/about-service-connection-policies) as part of this setup.\n\n1. Go to the [*Memorystore for Redis* page](https://console.cloud.google.com/memorystore/redis/instances) in the Google Cloud console.\n - Make sure the same project you're using for Firebase App Hosting is selected.\n - If you can't access this page, make sure billing is enabled for your project and that you've enabled the [Memorystore API](https://console.cloud.google.com/apis/dashboard).\n2. Select **Create Instance**.\n3. Configure the new instance with your preferred settings. Here are some example values you can use:\n - Enter `my-redis-cache` under **Instance ID**.\n - Enter `Redis cache` under **Display name**.\n - Choose **Basic** under the tier selector. Basic tier designates a standalone Redis node, as opposed to standard tier, which uses a replica node to backup your data.\n - Choose your App Hosting backend's region from the **Region** selector. **Be sure to set this value to match the region of your backend.**\n - Choose **any** from the zone selector.\n - Enter `5` under **Capacity**. This sets your instance capacity to 5 GB.\n - Select `5.0` under **Version** (recommended).\n - Choose **default** from the **Authorized network** selector.\n\nStep 1: Update `apphosting.yaml` with your VPC network ID\n\n1. Visit the [VPC networks page](/docs/app-hosting/console.cloud.google.com/networking/networks/list) in the Google Cloud console.\n2. Find the VPC network ID for your Memorystore for Redis instance (it will often be `default`).\n3. Set direct VPC egress configuration in `apphosting.yaml` using the VPC\n network ID:\n\n runConfig:\n vpcAccess:\n egress: PRIVATE_RANGES_ONLY # Default value\n networkInterfaces:\n - network: my-network-id\n\nStep 2: Add environment variables that direct your app to Redis\n\n1. Find connection information (host and port) in the \"Connections\" tab of your Memorystore for Redis instance in the Google Cloud console.\n2. Connect to Redis with `REDISPORT` and `REDISHOST` environment variables. Set\n these in `apphosting.yaml` using the host and port values from the\n Google Cloud console:\n\n env:\n # Sample only. Use actual values provided by Memorystore\n - variable: REDISPORT\n value: 6379\n - variable: REDISHOST\n value: 10.127.16.3\n\nStep 3: Use redis from your app\n\n1. Install the [redis](https://www.npmjs.com/package/redis) npm package:\n\n `npm install redis@latest`\n2. Access your redis cache from your code. Use the environment variables\n configured in the previous step. For example, here's how you might read from\n a cache in a Next.js route handler:\n\n - `src/lib/redis.js`\n\n import { createClient } from \"redis\";\n\n // Set these environment variables in apphosting.yaml\n const REDISHOST = process.env.REDISHOST;\n const REDISPORT = process.env.REDISPORT;\n\n let redisClient;\n\n export async function getClient(req, res) {\n // Only connect if a connection isn't already available\n if (!redisClient) {\n redisClient = await createClient(REDISPORT, REDISHOST)\n .on(\"error\", (err) =\u003e console.error(\"Redis Client Error\", err))\n .connect();\n }\n\n return redisClient;\n }\n\n - `src/app/counter/route.js`\n\n import { getClient } from \"@/lib/redis.js\";\n\n export async function GET(request) {\n const redisClient = await getClient();\n const count = await redisClient.get(\"counter\");\n\n return Response.json({ count });\n }\n\n export async function POST(request) {\n const redisClient = await getClient();\n const count = await redisClient.incr(\"counter\");\n\n return Response.json({ count });\n }\n\nStep 4 (optional): Configure your app for local development\n\nThe Firebase App Hosting emulator can override values using\n`apphosting.emulator.yaml`. Here, you can change the value of `REDISHOST` to\npoint to the localhost so that you can develop locally using a local\ninstallation of Redis.\n\n1. [Install Redis on your local machine](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)\n2. Create or edit `apphosting.emulators.yaml` to reference your local instance:\n\n env:\n - variable: REDISHOST\n value: 127.0.0.1"]]