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

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

หัวข้อนี้จะอธิบายถึงพร็อพเพอร์ตี้ Transport ที่ตั้งค่าได้ในการกำหนดค่า TargetEndpoint และ ProxyEndpoint เพื่อควบคุมลักษณะการรับส่งข้อความและการเชื่อมต่อ หากต้องการดูความครอบคลุมของการกำหนดค่า TargetEndpoint และ ProxyEndpoint โปรดดูข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API

พร็อพเพอร์ตี้การนำส่งปลายทาง

องค์ประกอบ 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>

พร็อพเพอร์ตี้การนำส่งปลายทางเป้าหมาย ข้อมูลจำเพาะ

ชื่อพร็อพเพอร์ตี้ ค่าเริ่มต้น คำอธิบาย
keepalive.timeout.millis 60000 ระยะหมดเวลาเนื่องจากไม่มีการใช้งานการเชื่อมต่อสำหรับการเชื่อมต่อเป้าหมายในพูลการเชื่อมต่อ หากการเชื่อมต่อในพูลไม่มีการใช้งานเกินขีดจำกัดที่ระบุไว้ ระบบจะปิดการเชื่อมต่อ
connect.timeout.millis

3000

หมดเวลาการเชื่อมต่อเป้าหมาย Edge จะแสดงรหัสสถานะ HTTP 503 หากการเชื่อมต่อหมดเวลา

io.timeout.millis 55000

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

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

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

ค่านี้ควรน้อยกว่าระยะหมดเวลาที่เราเตอร์ใช้สำหรับการสื่อสารกับผู้ประมวลผลข้อความ โปรดดูการกำหนดค่าระยะหมดเวลาของเราเตอร์สำหรับข้อมูลเพิ่มเติม

โปรดดูข้อมูลเพิ่มเติมที่การตั้งค่า 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 ลงในรายการโค้ดความสำเร็จเริ่มต้น ให้ตั้งค่าพร็อพเพอร์ตี้นี้เป็น

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

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

<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/ลดการบีบอัดหรือไม่

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

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

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

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. เราเตอร์จะส่งค่าการหมดเวลาไปยังเครื่องมือประมวลผลข้อความ ค่าระยะหมดเวลาของเราเตอร์คือค่าของ proxy_read_timeout ที่กำหนดโดยโฮสต์เสมือนที่จัดการคำขอ หรือค่าระยะหมดเวลาเริ่มต้นคือ 57 วินาที
  2. จากนั้นเครื่องมือประมวลผลข้อความจะตั้งค่า api.timeout ดังนี้
    1. หากไม่ได้ตั้งค่า api.timeout ที่ระดับพร็อกซี ให้ตั้งระยะหมดเวลาของเราเตอร์
    2. หากตั้งค่า api.timeout ที่ระดับพร็อกซี ให้ตั้งค่าบน Message Processor โดยใช้ระยะหมดเวลาของเราเตอร์ที่น้อยลงหรือมีค่า 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 ที่มีการทำให้ใช้งานได้กับสภาพแวดล้อมเป้าหมายที่โฮสต์ โปรดดูรายละเอียดที่ภาพรวมของเป้าหมายที่โฮสต์