การอ้างอิงพร็อพเพอร์ตี้ปลายทาง

คุณกำลังดูเอกสารประกอบ 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

3000

การเชื่อมต่อเป้าหมายหมดเวลา Edge แสดงรหัสสถานะ HTTP 503 หากมีการเชื่อมต่อ หมดเวลา ในบางกรณี ระบบอาจส่งคืนรหัสสถานะ HTTP 504 เมื่อ LoadBalancer ใช้ในคำจำกัดความของ TargetServer และมีการหมดเวลา

io.timeout.millis 55000

หากไม่มีข้อมูลให้อ่านตามจำนวนมิลลิวินาทีที่ระบุ หรือถ้าซ็อกเก็ต ไม่พร้อมที่จะเขียนข้อมูลสำหรับจำนวนมิลลิวินาทีที่ระบุ ธุรกรรมจึง ถือเป็นการหมดเวลา

  • หากการหมดเวลาเกิดขึ้นขณะเขียนคำขอ HTTP 408, Request Timeout
  • หากการหมดเวลาเกิดขึ้นขณะอ่านการตอบกลับ HTTP 504, Gateway Timeout

ค่านี้ควรน้อยกว่าค่าของฟิลด์ พร็อพเพอร์ตี้proxy_read_timeout ของโฮสต์เสมือน

ค่านี้ควรน้อยกว่าระยะหมดเวลาที่แท็ก เราเตอร์สำหรับการสื่อสารกับ Message Processor โปรดดูการกำหนดค่าระยะหมดเวลาของเราเตอร์สำหรับ และอีกมากมาย

โปรดดูการตั้งค่า io.timeout.millis และ api.timeout สำหรับ Edge สำหรับข้อมูลเพิ่มเติม

supports.http10 true หากนี่คือ true และลูกค้าส่งคำขอ 1.0 เป้าหมายจะส่งเป็น 1.0 ด้วย อีกครั้ง มิเช่นนั้น ระบบจะส่งคำขอ 1.1 ไปยังการกำหนดเป้าหมาย
supports.http11 true หากนี่คือ true และลูกค้าส่งคำขอ 1.1 เป้าหมายก็จะได้รับ 1.1 ด้วย มิฉะนั้น ระบบจะส่งคำขอ 1.0 ไปยังการกำหนดเป้าหมาย
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

โดยค่าเริ่มต้น (false) ระบบจะอ่านเพย์โหลดคำขอ HTTP ในบัฟเฟอร์และนโยบายที่ ดำเนินการกับเพย์โหลดได้ตามปกติ ในกรณีที่เพย์โหลดมีขนาดใหญ่กว่า ขนาดบัฟเฟอร์ (10 MB) คุณสามารถตั้ง ให้กับ true เมื่อ true เพย์โหลดคำขอ HTTP จะไม่อ่านในบัฟเฟอร์ คือ สตรีมตามที่เป็นอยู่ไปยังปลายทางเป้าหมาย ในกรณีนี้ นโยบายใดๆ ที่ดำเนินการเกี่ยวกับ ระบบจะข้ามเพย์โหลดในขั้นตอนคำขอ TargetEndpoint โปรดดูหัวข้อคำขอและการตอบกลับสตรีมมิง

response.streaming.enabled false

โดยค่าเริ่มต้น (false) ระบบจะอ่านเพย์โหลดการตอบสนอง HTTP ในบัฟเฟอร์และนโยบายที่ ดำเนินการกับเพย์โหลดได้ตามปกติ ในกรณีที่เพย์โหลดมีขนาดใหญ่กว่า ขนาดบัฟเฟอร์ (10 MB) คุณสามารถตั้ง ให้กับ true เมื่อ true เพย์โหลดการตอบสนอง HTTP จะไม่อ่านในบัฟเฟอร์ คือ สตรีมตามที่เป็นอยู่ในขั้นตอนการตอบสนองของ ProxyEndpoint ในกรณีนี้ นโยบายที่ ระบบจะข้ามการดำเนินการในเพย์โหลดในขั้นตอนการตอบสนอง TargetEndpoint ดูเพิ่มเติม คำขอสตรีมมิงและ คำตอบ

success.codes ไม่มี

โดยค่าเริ่มต้น Apigee Edge จะถือว่ารหัส HTTP 4XX หรือ 5XX เป็นข้อผิดพลาดและจะถือว่าโค้ด HTTP 1XX, 2XX, 3XX สำเร็จ คุณสมบัตินี้เปิดใช้คำจำกัดความที่ชัดเจนของโค้ดความสำเร็จสำหรับ ตัวอย่างเช่น 2XX, 1XX, 505 จะถือว่าโค้ดตอบกลับ HTTP 100, 200 และ 505 เป็น ประสบความสำเร็จ

การตั้งค่าคุณสมบัตินี้จะเขียนทับค่าเริ่มต้น ดังนั้นหากต้องการเพิ่ม รหัส HTTP 400 เป็นรายการรหัสความสำเร็จเริ่มต้น ให้ตั้งค่าคุณสมบัตินี้เป็น

&lt;Property name="success.codes">1XX,2XX,3XX,400</Property>

หากคุณต้องการให้ถือว่าเฉพาะรหัส HTTP 400 เป็นรหัสความสำเร็จ ให้ตั้งค่าพร็อพเพอร์ตี้ เป็น:

&lt;Property name="Success.codes">400</Property>

เมื่อตั้งรหัส HTTP 400 เป็นโค้ดเดียวสำเร็จ รหัส 1XX, 2XX และ 3XX จะ ถือว่าไม่ผ่าน

compression.algorithm ไม่มี โดยค่าเริ่มต้น Apigee Edge จะส่งต่อคำขอไปยังเป้าหมายโดยใช้การบีบอัดประเภทเดียวกัน ตามคำขอของลูกค้า หากได้รับคำขอจากลูกค้าที่ใช้ gzip จากนั้น Apigee Edge จะส่งต่อคำขอเพื่อกำหนดเป้าหมายโดยใช้การบีบอัด gzip ถ้า การตอบสนองที่ได้รับจากเป้าหมายใช้ deflate จากนั้น Apigee Edge จะส่งต่อการตอบสนองไปยัง ไคลเอ็นต์ที่ใช้ deflate ค่าที่รองรับมีดังนี้
  • gzip: ส่งข้อความโดยใช้การบีบอัด gzip เสมอ
  • deflate: ส่งข้อความโดยใช้การบีบอัดแบบ Deflate
  • ไม่มี: ส่งข้อความทุกครั้งโดยไม่มีการบีบอัด

ดูเพิ่มเติม: Apigee รองรับการบีบอัด/ลดการบีบอัดด้วยการบีบอัด GZIP/deflate ไหม

request.retain.headers.
enabled
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.
enabled
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.
enabled
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.
enabled
false โดยค่าเริ่มต้น (false) ระบบจะอ่านเพย์โหลดคำขอ HTTP ในบัฟเฟอร์และนโยบายที่ ดำเนินการกับเพย์โหลดได้ตามปกติ ในกรณีที่เพย์โหลดมีขนาดใหญ่กว่า ขนาดบัฟเฟอร์ (10 MB) คุณสามารถตั้ง ให้กับ true เมื่อ true เพย์โหลดคำขอ HTTP จะไม่อ่านในบัฟเฟอร์ คือ สตรีมตามที่มีอยู่ไปยังโฟลว์คำขอ TargetEndpoint ในกรณีนี้ นโยบายใดๆ ที่ดำเนินการ ในเพย์โหลดในขั้นตอนคำขอ ProxyEndpoint จะถูกข้าม โปรดดูหัวข้อคำขอและการตอบกลับสตรีมมิง
response.streaming.
enabled
false โดยค่าเริ่มต้น (false) ระบบจะอ่านเพย์โหลดการตอบสนอง HTTP ในบัฟเฟอร์และนโยบายที่ ดำเนินการกับเพย์โหลดได้ตามปกติ ในกรณีที่เพย์โหลดมีขนาดใหญ่กว่า ขนาดบัฟเฟอร์ (10 MB) คุณสามารถตั้ง ให้กับ true เมื่อ true เพย์โหลดการตอบสนอง HTTP จะไม่อ่านในบัฟเฟอร์ คือ สตรีมตามที่เป็นอยู่ไปยังไคลเอ็นต์ ในกรณีนี้ นโยบายใดๆ ที่ทำงานกับเพย์โหลดใน ระบบจะข้ามขั้นตอนการตอบกลับของ ProxyEndpoint โปรดดูหัวข้อคำขอและการตอบกลับสตรีมมิง
compression.algorithm ไม่มี

โดยค่าเริ่มต้น Apigee Edge จะใช้ประเภทการบีบอัดที่ตั้งค่าไว้สำหรับข้อความที่ได้รับ สำหรับ ตัวอย่างเช่น Apigee Edge เมื่อไคลเอ็นต์ส่งคำขอที่ใช้การบีบอัด gzip ส่งต่อคำขอไปยังการกำหนดเป้าหมายโดยใช้การบีบอัด gzip คุณกำหนดค่าการบีบอัดได้ ให้นำไปใช้อย่างชัดแจ้งโดยตั้งค่าพร็อพเพอร์ตี้นี้ใน TargetEndpoint หรือ ProxyEndpoint ค่าที่รองรับมีดังนี้

  • gzip: ส่งข้อความโดยใช้การบีบอัด gzip เสมอ
  • deflate: ส่งข้อความโดยใช้การบีบอัดแบบ Deflate
  • ไม่มี: ส่งข้อความทุกครั้งโดยไม่มีการบีบอัด

ดูเพิ่มเติม: Apigee รองรับการบีบอัด/ลดการบีบอัดด้วยการบีบอัด GZIP/deflate ไหม

api.timeout ไม่มี

กำหนดค่าระยะหมดเวลาสำหรับพร็อกซี API แต่ละรายการ

คุณสามารถกำหนดค่าพร็อกซี API รวมถึงพร็อกซีที่มี สตรีมมิงอยู่ เพื่อหมดเวลาหลังจากเวลาที่ระบุโดยมีสถานะ 504 Gateway Timeout กรณีการใช้งานหลักมีไว้สำหรับลูกค้าที่มีพร็อกซี API ที่ใช้เวลาดำเนินการนานกว่า ตัวอย่างเช่น สมมติว่าคุณต้องใช้พร็อกซีบางรายการเพื่อหมดเวลาที่ 3 นาที ต่อไปนี้คือวิธีที่คุณจะใช้ api.timeout

  1. ก่อนอื่นโปรดกำหนดค่าตัวจัดสรรภาระงาน เราเตอร์ และผู้ประมวลผลข้อความให้ หมดเวลาหลังจาก 3 นาที
  2. จากนั้นกำหนดค่าพร็อกซีที่เกี่ยวข้องให้หมดเวลาใน 3 นาที ระบุค่าใน มิลลิวินาที เช่น <Property name="api.timeout">180000</Property>
  3. อย่างไรก็ตาม โปรดทราบว่าการเพิ่มระยะหมดเวลาของระบบอาจทำให้เกิดปัญหาด้านประสิทธิภาพ เนื่องจากพร็อกซีทั้งหมดที่ไม่มีการตั้งค่า api.timeout จะใช้ภาระงานใหม่ที่สูงขึ้น การหมดเวลาของตัวจัดสรรภาระงาน เราเตอร์ และผู้ประมวลผลข้อความ กำหนดค่าพร็อกซี API อื่นๆ ที่ ไม่ต้องกำหนดระยะหมดเวลาที่นานขึ้นเพื่อใช้ระยะหมดเวลาที่ต่ำกว่า ตัวอย่างเช่น พารามิเตอร์ต่อไปนี้ตั้งค่า พร็อกซี API ที่จะหมดเวลาหลังจากผ่านไป 1 นาที:
    วันที่ <Property name="api.timeout">60000</Property>

คุณตั้งค่าพร็อพเพอร์ตี้นี้ด้วยตัวแปรไม่ได้

ลูกค้าที่แก้ไขระยะหมดเวลา Edge ไม่ได้จะกำหนดค่าพร็อกซี API ได้ด้วย การหมดเวลา ตราบใดที่ระยะหมดเวลานั้นสั้นกว่าโปรแกรมประมวลผลข้อความ Edge มาตรฐาน 57 วินาที

โปรดดูการตั้งค่า io.timeout.millis และ api.timeout สำหรับ Edge สำหรับข้อมูลเพิ่มเติม

การตั้งค่า io.timeout.millis และ api.timeout สำหรับ Edge

ใน Edge การดำเนินการของ io.timeout.millis และ api.timeout ที่เกี่ยวข้องกัน ในทุกๆ คำขอที่ส่งไปยังพร็อกซี API

  1. เราเตอร์จะส่งค่าระยะหมดเวลาไปยัง Message Processor ค่าระยะหมดเวลาของเราเตอร์คือ ค่าของ proxy_read_timeout ที่กำหนดโดยโฮสต์เสมือน ที่จัดการคำขอ หรือค่าระยะหมดเวลาเริ่มต้นที่ 57 วินาที
  2. จากนั้นตัวประมวลผลข้อความจะตั้งค่า api.timeout:
    1. หากไม่ได้ตั้งค่า api.timeout ที่ระดับพร็อกซี ให้ตั้งค่าเป็นระยะหมดเวลาของเราเตอร์
    2. หากตั้งค่า api.timeout ที่ระดับพร็อกซี ให้ตั้งค่าในเครื่องมือประมวลผลข้อความเป็น ระยะหมดเวลาของเราเตอร์น้อยกว่าหรือมีค่า api.timeout น้อยกว่า
  3. ค่าของ api.timeout จะระบุระยะเวลาสูงสุดที่พร็อกซี API มี เพื่อเรียกใช้จากคำขอ API ไปยังการตอบกลับ

    หลังจากแต่ละนโยบายในพร็อกซี API ทำงาน หรือก่อนที่เครื่องมือประมวลผลข้อความจะส่งคำขอไปยังปลายทางเป้าหมาย ตัวประมวลผลข้อความจะคำนวณ (api.timeout - เวลาที่ผ่านไปนับจากจุดเริ่มต้นของคำขอ) หากค่าน้อยกว่า 0 แสดงว่าระยะเวลาสูงสุดในการจัดการคำขอหมดอายุ ตัวประมวลผลข้อความแสดงผล 504

  4. ค่าของ io.timeout.millis ระบุระยะเวลาสูงสุดที่ปลายทางเป้าหมาย ต้องตอบสนอง

    ก่อนเชื่อมต่อกับปลายทางเป้าหมาย ตัวประมวลผลข้อความจะระบุ (api.timeout - เวลาที่ผ่านไปนับจากจุดเริ่มต้นของคำขอ) และ io.timeout.millis จากนั้นจะตั้งค่า io.timeout.millis เป็นค่านั้น

    • หากการหมดเวลาเกิดขึ้นขณะเขียนคำขอ HTTP 408, Request Timeout
    • หากการหมดเวลาเกิดขึ้นขณะอ่านการตอบกลับ HTTP 504, Gateway Timeout

เกี่ยวกับ ScriptTarget สำหรับแอปพลิเคชัน Node.js

องค์ประกอบ ScriptTarget ใช้เพื่อผสานรวมแอปพลิเคชัน Node.js ลงในพร็อกซีของคุณ สำหรับ ข้อมูลเกี่ยวกับการใช้ Node.js และ ScriptTarget โปรดดู:

เกี่ยวกับปลายทาง HostedTarget

แท็ก <HostedTarget/> ที่ว่างเปล่าจะบอก Edge ให้ใช้ Node.js เป็นเป้าหมาย ซึ่งมีการทำให้ใช้งานได้กับสภาพแวดล้อมเป้าหมายที่โฮสต์ โปรดดูรายละเอียดที่หัวข้อ ภาพรวมของเป้าหมายที่โฮสต์