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

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

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

พร็อพเพอร์ตี้การขนส่งของ TargetEndpoint

องค์ประกอบ HTTPTargetConnection ในการกำหนดค่า TargetEndpoint จะกำหนดชุดพร็อพเพอร์ตี้การขนส่ง HTTP คุณสามารถใช้พร็อพเพอร์ตี้เหล่านี้เพื่อตั้งค่าการกำหนดค่าระดับการขนส่ง

ระบบจะตั้งค่าพร็อพเพอร์ตี้ในองค์ประกอบ HTTPTargetConnection ของ TargetEndpoint ดังที่แสดงด้านล่าง

<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` ของโฮสต์เสมือนเสมอ

ค่านี้ควรน้อยกว่าระยะหมดเวลาที่ Router ใช้ในการสื่อสารกับ Message Processor ดูข้อมูลเพิ่มเติมได้ที่การกำหนดค่าระยะหมดเวลาของ Routerสำหรับ เพิ่มเติม

ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่า 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 เสมอ
  • none: ส่งข้อความโดยไม่มีการบีบอัดเสมอ

ดูเพิ่มเติมได้ที่ 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

องค์ประกอบ HTTPTargetConnection ของ ProxyEndpoint จะกำหนดชุดพร็อพเพอร์ตี้การขนส่ง HTTP คุณสามารถใช้พร็อพเพอร์ตี้เหล่านี้ เพื่อตั้งค่าการกำหนดค่าระดับการขนส่ง

ระบบจะตั้งค่าพร็อพเพอร์ตี้ในองค์ประกอบ HTTPProxyConnection ของ ProxyEndpoint ดังนี้

<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 เสมอ
  • none: ส่งข้อความโดยไม่มีการบีบอัดเสมอ

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

api.timeout ไม่มี

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

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

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

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

ลูกค้าที่ไม่สามารถแก้ไขระยะหมดเวลาของ Edge ยังสามารถกำหนดค่าระยะหมดเวลาของพร็อกซี API ได้ ตราบใดที่ระยะหมดเวลาสั้นกว่าระยะหมดเวลามาตรฐานของ Message Processor ของ 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. จากนั้น Message Processor จะตั้งค่า api.timeout ดังนี้
    1. หากไม่ได้ตั้งค่า api.timeout ที่ระดับพร็อกซี ให้ตั้งค่าเป็นระยะหมดเวลาของเราเตอร์
    2. หากตั้งค่า api.timeout ที่ระดับพร็อกซี ให้ตั้งค่าใน Message Processor เป็นค่าที่น้อยกว่าระหว่างระยะหมดเวลาของเราเตอร์กับค่า api.timeout
  3. ค่า api.timeout จะระบุระยะเวลาสูงสุดที่พร็อกซี API มี ในการดำเนินการตั้งแต่คำขอ API ไปจนถึงการตอบกลับ

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

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

    ก่อนที่จะเชื่อมต่อกับปลายทางเป้าหมาย Message Processor จะกำหนดค่าที่น้อยกว่าระหว่าง (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 ที่ทำให้ใช้งานได้ในสภาพแวดล้อม Hosted Targets เป็นเป้าหมาย ดูรายละเอียดได้ที่ ภาพรวมของ Hosted Targets