شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
این مبحث، ویژگیهای انتقالی را شرح میدهد که میتوانند در پیکربندیهای TargetEndpoint و ProxyEndpoint برای کنترل رفتار پیامرسانی و اتصال تنظیم شوند. برای پوشش کامل پیکربندی TargetEndpoint و ProxyEndpoint، به مرجع پیکربندی پروکسی API مراجعه کنید.
ویژگیهای انتقال TargetEndpoint
عنصر HTTPTargetConnection در پیکربندیهای TargetEndpoint مجموعهای از ویژگیهای انتقال HTTP را تعریف میکند. میتوانید از این ویژگیها برای تنظیم پیکربندیهای سطح انتقال استفاده کنید.
ویژگیها روی عناصر TargetEndpoint HTTPTargetConnection مطابق شکل زیر تنظیم میشوند:
<TargetEndpoint name="default">
<HTTPTargetConnection>
<URL>http://mocktarget.apigee.net</URL>
<Properties>
<Property name="supports.http10">true</Property>
<Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
<Property name="retain.queryparams">apikey</Property>
</Properties>
<CommonName>COMMON_NAME_HERE</CommonName>
</HTTPTargetConnection>
</TargetEndpoint>مشخصات ویژگی انتقال TargetEndpoint
| نام ملک | مقدار پیشفرض | توضیحات |
|---|---|---|
keepalive.timeout.millis | 60000 | زمان انتظار برای غیرفعال بودن اتصال برای اتصال هدف در مخزن اتصال. اگر اتصال در مخزن اتصال بیش از حد مشخص شده غیرفعال باشد، اتصال بسته میشود. |
connect.timeout.millis | | پایان زمان اتصال هدف. در صورت وقوع پایان زمان اتصال، Edge یک کد وضعیت HTTP |
io.timeout.millis | 55000 | اگر برای تعداد میلیثانیه مشخصشده، دادهای برای خواندن وجود نداشته باشد، یا اگر سوکت برای تعداد میلیثانیه مشخصشده آماده نوشتن داده نباشد، آنگاه تراکنش به عنوان یک وقفه زمانی در نظر گرفته میشود.
این مقدار همیشه باید کوچکتر از مقدار ویژگی proxy_read_timeout میزبان مجازی باشد. این مقدار باید کمتر از زمان وقفهای باشد که روتر برای ارتباط با پردازنده پیام استفاده میکند. برای اطلاعات بیشتر به پیکربندی زمان وقفه روتر مراجعه کنید. برای اطلاعات بیشتر به تنظیمات io.timeout.millis و api.timeout برای Edge مراجعه کنید. |
supports.http10 | true | اگر این true باشد و کلاینت یک درخواست ۱.۰ ارسال کند، به مقصد نیز یک درخواست ۱.۰ ارسال میشود. در غیر این صورت، درخواست ۱.۱ به مقصد ارسال میشود. |
supports.http11 | true | اگر این true باشد و کلاینت یک درخواست ۱.۱ ارسال کند، به هدف نیز یک درخواست ۱.۱ ارسال میشود، در غیر این صورت درخواست ۱.۰ به هدف ارسال میشود. |
use.proxy | true | اگر روی true تنظیم شود، و پیکربندیهای پروکسی در http.properties (فقط برای استقرارهای داخلی) مشخص شده باشند، آنگاه اتصالات هدف برای استفاده از پروکسی مشخص شده تنظیم میشوند. |
use.proxy.tunneling | true | اگر این مقدار روی true تنظیم شده باشد و پیکربندیهای پروکسی در http.properties (فقط برای استقرارهای داخلی) مشخص شده باشند، اتصالات هدف طوری تنظیم میشوند که از تونل مشخص شده استفاده کنند. اگر هدف از TLS/SSL استفاده کند، این ویژگی نادیده گرفته میشود و پیام همیشه از طریق یک تونل ارسال میشود. |
enable.method.override | false | برای متد HTTP مشخص شده، یک هدر X-HTTP-Method-Override روی درخواست خروجی به سرویس هدف تنظیم کنید. برای مثال، <Property name="GET.override.method">POST</Property> |
*.override.method | ناموجود | برای متد HTTP مشخص شده، یک هدر X-HTTP-Method-Override روی درخواست خروجی تنظیم کنید. برای مثال، <Property name="GET.override.method">POST</Property> |
request.streaming.enabled | false | به طور پیشفرض ( |
response.streaming.enabled | false | به طور پیشفرض ( |
success.codes | ناموجود | به طور پیشفرض، Apigee Edge کد HTTP تنظیم این ویژگی، مقادیر پیشفرض را بازنویسی میکند. بنابراین، اگر میخواهید کد HTTP <نام ملک="success.codes">1XX، 2XX، 3XX، 400</ملک> اگر میخواهید فقط کد HTTP <نام ویژگی="success.codes">400</ویژگی> با تنظیم کد HTTP |
compression.algorithm | ناموجود | به طور پیشفرض، Apigee Edge درخواستها را با استفاده از همان نوع فشردهسازی که درخواست کلاینت استفاده میکند، به مقصد ارسال میکند. اگر درخواست از کلاینت با استفاده از، به عنوان مثال، فشردهسازی gzip دریافت شود، Apigee Edge درخواست را با استفاده از فشردهسازی gzip به مقصد ارسال میکند. اگر پاسخ دریافتی از مقصد با استفاده از deflate باشد، Apigee Edge پاسخ را با استفاده از deflate به کلاینت ارسال میکند. مقادیر پشتیبانی شده عبارتند از:
همچنین ببینید: آیا Apigee از فشردهسازی/رفع فشردهسازی با فشردهسازی GZIP/deflate پشتیبانی میکند؟ |
request.retain.headers. | true | به طور پیشفرض، Apigee Edge همیشه تمام هدرهای HTTP را در پیامهای خروجی نگه میدارد. وقتی روی true تنظیم شود، تمام هدرهای HTTP موجود در درخواست ورودی، روی درخواست خروجی تنظیم میشوند. |
request.retain.headers | ناموجود | هدرهای HTTP خاصی را از درخواست تعریف میکند که باید روی درخواست خروجی به سرویس هدف تنظیم شوند. به عنوان مثال، برای عبور از هدر User-Agent ، مقدار request.retain.headers را روی User-Agent تنظیم کنید. چندین هدر HTTP به صورت لیستی که با کاما از هم جدا شدهاند، مشخص میشوند، به عنوان مثال، User-Agent,Referer,Accept-Language . این ویژگی request.retain.headers.enabled را لغو میکند. اگر request.retain.headers.enabled روی false تنظیم شود، هر هدری که در ویژگی request.retain.headers مشخص شده باشد، همچنان روی پیام خروجی تنظیم میشود. |
response.retain.headers. | true | به طور پیشفرض، Apigee Edge همیشه تمام هدرهای HTTP را در پیامهای خروجی نگه میدارد. وقتی روی true تنظیم شود، تمام هدرهای HTTP موجود در پاسخ ورودی از سرویس هدف، قبل از ارسال به ProxyEndpoint، روی پاسخ خروجی تنظیم میشوند. |
response.retain.headers | ناموجود | هدرهای HTTP خاصی را از پاسخ تعریف میکند که باید قبل از ارسال به ProxyEndpoint، روی پاسخ خروجی تنظیم شوند. به عنوان مثال، برای عبور از هدر Expires ، مقدار response.retain.headers را روی Expires تنظیم کنید. چندین هدر HTTP به صورت یک لیست جدا شده با کاما مشخص میشوند، به عنوان مثال، Expires,Set-Cookie . این ویژگی response.retain.headers.enabled را لغو میکند. اگر response.retain.headers.enabled روی false تنظیم شود، هر هدری که در ویژگی response.retain.headers مشخص شده باشد، همچنان روی پیام خروجی تنظیم میشود. |
retain.queryparams. | true | به طور پیشفرض، Apigee Edge همیشه تمام پارامترهای پرسوجو را در درخواستهای خروجی حفظ میکند. وقتی روی true تنظیم شود، تمام پارامترهای پرسوجوی موجود در درخواست ورودی، روی درخواست خروجی به سرویس هدف تنظیم میشوند. |
retain.queryparams | ناموجود | پارامترهای پرسوجوی خاصی را برای تنظیم در درخواست خروجی تعریف میکند. برای مثال، برای گنجاندن پارامتر پرسوجوی apikey از پیام درخواست، retain.queryparams را روی apikey تنظیم کنید. پارامترهای پرسوجوی چندگانه به صورت یک لیست جدا شده با کاما مشخص میشوند، به عنوان مثال، apikey,environment . این ویژگی retain.queryparams.enabled را لغو میکند. |
ویژگیهای انتقال ProxyEndpoint
عناصر ProxyEndpoint HTTPTargetConnection مجموعهای از ویژگیهای انتقال HTTP را تعریف میکنند. این ویژگیها میتوانند برای تنظیم پیکربندیهای سطح انتقال استفاده شوند.
ویژگیها روی عناصر ProxyEndpoint HTTPProxyConnection به شرح زیر تنظیم میشوند:
<ProxyEndpoint name="default">
<HTTPProxyConnection>
<BasePath>/v1/weather</BasePath>
<Properties>
<Property name="request.streaming.enabled">true</Property>
</Properties>
<VirtualHost>default</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
</ProxyEndpoint>برای اطلاعات بیشتر در مورد میزبانهای مجازی، به «درباره میزبانهای مجازی» مراجعه کنید.
مشخصات ویژگی انتقال ProxyEndpoint
| نام ملک | مقدار پیشفرض | توضیحات |
|---|---|---|
X-Forwarded-For | false | وقتی روی true تنظیم شود، آدرس IP میزبان مجازی به عنوان مقدار هدر HTTP X-Forwarded-For به درخواست خروجی اضافه میشود. |
request.streaming. | false | به طور پیشفرض ( false )، بارهای داده درخواست HTTP در یک بافر خوانده میشوند و سیاستهایی که میتوانند روی این بار داده عمل کنند، همانطور که انتظار میرود، کار میکنند. در مواردی که بارهای داده بزرگتر از اندازه بافر (10 مگابایت) باشند، میتوانید این ویژگی را روی true تنظیم کنید. وقتی true ، بارهای داده درخواست HTTP در یک بافر خوانده نمیشوند؛ آنها به همان صورت در جریان درخواست TargetEndpoint پخش میشوند. در این حالت، هر سیاستی که روی بار داده در جریان درخواست ProxyEndpoint عمل کند، نادیده گرفته میشود. همچنین به Streaming request and responses مراجعه کنید. |
response.streaming. | false | به طور پیشفرض ( false )، بارهای داده پاسخ HTTP در یک بافر خوانده میشوند و سیاستهایی که میتوانند روی این بار داده عمل کنند، همانطور که انتظار میرود، کار میکنند. در مواردی که بارهای داده بزرگتر از اندازه بافر (10 مگابایت) باشند، میتوانید این ویژگی را روی true تنظیم کنید. وقتی true ، بارهای داده پاسخ HTTP در یک بافر خوانده نمیشوند؛ آنها به همان صورت برای کلاینت پخش میشوند. در این حالت، هر سیاستی که روی بار داده در جریان پاسخ ProxyEndpoint عمل کند، نادیده گرفته میشود. همچنین به Streaming requestها و responseها مراجعه کنید. |
compression.algorithm | ناموجود | به طور پیشفرض، Apigee Edge نوع فشردهسازی تعیینشده برای هر پیام دریافتی را در نظر میگیرد. برای مثال، در جایی که یک کلاینت درخواستی را ارسال میکند که از فشردهسازی gzip استفاده میکند، Apigee Edge درخواست را با استفاده از فشردهسازی gzip به مقصد ارسال میکند. میتوانید با تنظیم این ویژگی در TargetEndpoint یا ProxyEndpoint، الگوریتمهای فشردهسازی را طوری پیکربندی کنید که به طور صریح اعمال شوند. مقادیر پشتیبانیشده عبارتند از:
همچنین ببینید: آیا Apigee از فشردهسازی/رفع فشردهسازی با فشردهسازی GZIP/deflate پشتیبانی میکند؟ |
api.timeout | ناموجود | پیکربندی زمان انتظار برای پروکسیهای API به صورت جداگانه شما میتوانید پروکسیهای API، حتی آنهایی که قابلیت پخش جریانی دارند، را طوری پیکربندی کنید که پس از مدت زمان مشخصی با وضعیت
شما نمیتوانید این ویژگی را با یک متغیر مقداردهی کنید. مشتریانی که نمیتوانند زمانهای وقفه Edge را تغییر دهند، میتوانند یک زمان وقفه پروکسی API را نیز پیکربندی کنند، البته تا زمانی که این زمان وقفه کوتاهتر از زمان وقفه استاندارد پردازنده پیام Edge که ۵۷ ثانیه است، باشد. برای اطلاعات بیشتر به تنظیمات io.timeout.millis و api.timeout برای Edge مراجعه کنید. |
تنظیم io.timeout.millis و api.timeout برای Edge
در Edge، عملکرد io.timeout.millis و api.timeout به هم مرتبط هستند. در هر درخواست به یک پروکسی API:
- روتر مقدار timeout خود را به پردازشگر پیام ارسال میکند. مقدار timeout روتر یا مقدار
proxy_read_timeoutاست که توسط میزبان مجازی که درخواست را مدیریت میکند تنظیم شده است، یا مقدار timeout پیشفرض ۵۷ ثانیه است. - سپس پردازشگر پیام،
api.timeoutرا تنظیم میکند:- اگر
api.timeoutدر سطح پروکسی تنظیم نشده باشد، آن را روی زمانبندی روتر تنظیم کنید. - اگر
api.timeoutدر سطح پروکسی تنظیم شده باشد، آن را در پردازنده پیام روی کمترین مقدار از زمانبندی روتر یا مقدارapi.timeoutتنظیم کنید.
- اگر
مقدار
api.timeoutحداکثر مدت زمانی را که یک پروکسی API باید از درخواست API تا پاسخ اجرا کند، مشخص میکند.پس از اجرای هر خطمشی در پروکسی API، یا قبل از اینکه پردازنده پیام، درخواست را به نقطه پایانی هدف ارسال کند، پردازنده پیام (
api.timeout- زمان سپری شده از شروع درخواست) را محاسبه میکند. اگر مقدار کمتر از صفر باشد، حداکثر زمان برای رسیدگی به درخواست منقضی شده است و پردازنده پیام504را برمیگرداند.مقدار
io.timeout.millisحداکثر زمانی را که نقطه پایانی هدف باید پاسخ دهد، مشخص میکند.قبل از اتصال به یک نقطه پایانی هدف، پردازنده پیام کمترین مقدار از بین (
api.timeout- زمان سپری شده از شروع درخواست) وio.timeout.millisرا تعیین میکند. سپسio.timeout.millisرا روی آن مقدار تنظیم میکند.- اگر هنگام نوشتن درخواست HTTP، وقفهای رخ دهد،
408, Request Timeoutبازگردانده میشود. - اگر هنگام خواندن پاسخ HTTP، وقفهای رخ دهد،
504, Gateway Timeoutبازگردانده میشود.
- اگر هنگام نوشتن درخواست HTTP، وقفهای رخ دهد،
درباره ScriptTarget برای برنامههای Node.js
عنصر ScriptTarget برای ادغام یک برنامه Node.js در پروکسی شما استفاده میشود. برای اطلاعات بیشتر در مورد استفاده از Node.js و ScriptTarget، به موارد زیر مراجعه کنید:
درباره نقاط پایانی HostedTarget
یک تگ خالی <HostedTarget/> به Edge میگوید که از یک برنامه Node.js که در محیط Hosted Targets مستقر شده است، به عنوان هدف خود استفاده کند. برای جزئیات بیشتر، به نمای کلی Hosted Targets مراجعه کنید.