คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์จะได้รับรหัสสถานะ HTTP 404 พร้อมข้อความ
Not Found และข้อความแสดงข้อผิดพลาด
Unable to identify proxy for host: VIRTUAL_HOST and url: PATH
เป็นการตอบกลับการเรียก API
ข้อผิดพลาดนี้หมายความว่า Edge ไม่พบพร็อกซี API สำหรับโฮสต์เสมือนและเส้นทางที่ระบุ
ข้อความแสดงข้อผิดพลาด
คุณจะได้รับรหัสสถานะ HTTP ต่อไปนี้
HTTP/1.1 404 Not Found
นอกจากนี้ คุณจะเห็นข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความที่แสดงด้านล่าง
{
"fault":{
"faultstring":"Unable to identify proxy for host: default and url: \/oauth2\/token",
"detail":{
"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"
}
}
}
ข้อความแสดงข้อผิดพลาดข้างต้นระบุว่า Edge ไม่พบพร็อกซี API สำหรับ
defaultโฮสต์เสมือนและ/oauth2/tokenเส้นทาง
สาเหตุที่เป็นไปได้
สาเหตุที่เป็นไปได้บางประการของข้อผิดพลาดนี้มีดังนี้
| สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาที่ใช้ได้กับ |
|---|---|---|
| พร็อกซี API ไม่ได้เชื่อมโยงกับโฮสต์เสมือนที่เฉพาะเจาะจง | ไม่ได้กำหนดค่าพร็อกซี API ที่เฉพาะเจาะจงให้ยอมรับคำขอในโฮสต์เสมือน ที่ระบุในข้อความแสดงข้อผิดพลาด | ผู้ใช้ Edge Public และ Private Cloud |
| นำโฮสต์เสมือนออกในการแก้ไขพร็อกซี API ที่เพิ่งทำให้ใช้งานได้ | การนำโฮสต์เสมือนออกจากรีวิชันที่เพิ่งติดตั้งใช้งานในขณะที่ไคลเอ็นต์ยังคงใช้โฮสต์เสมือนที่เฉพาะเจาะจงอาจทำให้เกิดปัญหานี้ | ผู้ใช้ Edge Public และ Private Cloud |
| เส้นทางที่ไม่ได้เชื่อมโยงกับพร็อกซี API ใดๆ | ไม่ได้กำหนดค่าพร็อกซี API ที่เฉพาะเจาะจงให้ยอมรับคำขอในเส้นทางที่ระบุ ในข้อความแสดงข้อผิดพลาด | ผู้ใช้ Edge Public และ Private Cloud |
| ไม่ได้ทําให้พร็อกซี API ใช้งานได้ในสภาพแวดล้อม | พร็อกซี API ที่เฉพาะเจาะจงไม่ได้ติดตั้งใช้งานในสภาพแวดล้อมที่เฉพาะเจาะจงซึ่งคุณ พยายามส่งคำขอ API | ผู้ใช้ Edge Public และ Private Cloud |
| ไม่ได้โหลดสภาพแวดล้อมในตัวประมวลผลข้อความ | ระบบยังไม่ได้โหลดสภาพแวดล้อมที่เฉพาะเจาะจง (ซึ่งคุณพยายามส่งคำขอ API) ใน Message Processor เนื่องจากเกิดข้อผิดพลาด | ผู้ใช้ Edge Private Cloud |
| ไม่ได้ติดตั้งใช้งานพร็อกซี API ใน Message Processor อย่างน้อย 1 รายการ | อาจไม่ได้ติดตั้งใช้งานพร็อกซี API ใน Message Processor อย่างน้อย 1 รายการเนื่องจากไม่มี การแจ้งเตือนเหตุการณ์ระหว่างการติดตั้งใช้งาน | ผู้ใช้ Edge Private Cloud |
ขั้นตอนการวินิจฉัยที่พบบ่อย
บันทึกของ NGINX และ Message Processor จะมีประโยชน์ในการแก้ปัญหาข้อผิดพลาด 404
ทำตามขั้นตอนต่อไปนี้เพื่อตรวจสอบบันทึก
- ดูบันทึก NGINX โดยใช้คำสั่งต่อไปนี้
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- ตรวจสอบช่องต่อไปนี้ในรายการบันทึก
ช่อง ค่า Upstream_status, status404X-Apigee-fault-codemessaging.adaptors.http.flow.ApplicationNotFoundจดรหัสข้อความจากบันทึก
- ตรวจสอบบันทึกของ Message Processor
(
/opt/apigee/var/log/edge-message-processor/logs/system.log)เพื่อดูว่าคุณมีmessaging.adaptors.http.flow.ApplicationNotFoundสำหรับ API ที่เฉพาะเจาะจงหรือไม่ หรือคุณมีรหัสข้อความที่ไม่ซ้ำจากขั้นตอนที่ 2 สำหรับคำขอ API หรือไม่ตัวอย่างข้อความแสดงข้อผิดพลาดจากบันทึกของ Message Processor
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:POST, uri:/weather, message Id:null, exception:com.apigee.rest.framework.ResourceNotFoundException{ code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather, associated contexts = []}, context:Context@342ea86b input=ClientInputChannel(SSLClientChannel[Accepted: Remote:10.123.123.123:8443 Local:10.135.33.68:62092]@1206954 useCount=1 bytesRead=0 bytesWritten=0 age=1ms lastIO=0ms isOpen=true)
บันทึกด้านบนแสดงรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดดังนี้
code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather
สาเหตุ: พร็อกซี API ไม่ได้เชื่อมโยงกับโฮสต์เสมือนที่เฉพาะเจาะจง
หากไม่ได้กำหนดค่าพร็อกซี API ให้ยอมรับคำขอสำหรับโฮสต์เสมือนที่เฉพาะเจาะจง
เราจะได้รับการตอบกลับ 404 Not Found พร้อมข้อความแสดงข้อผิดพลาด
Unable to identify proxy for host: VIRTUAL_HOST and url: PATH.
การวินิจฉัย
- ตรวจสอบการกำหนดค่าปลายทางพร็อกซีสำหรับพร็อกซี API และดูว่าพร็อกซี API ได้รับการกำหนดค่าให้ยอมรับคำขอสำหรับโฮสต์เสมือนที่ระบุในข้อผิดพลาดหรือไม่ ซึ่งระบุโดยองค์ประกอบ
VirtualHostมาดูตัวอย่างProxyEndpointการกำหนดค่าเพื่อทำความเข้าใจเรื่องนี้กันตัวอย่างการกำหนดค่าปลายทางพร็อกซีที่แสดงว่าพร็อกซี API ยอมรับคำขอในโฮสต์เสมือนที่ปลอดภัย

- สมมติว่ามีการกำหนดโฮสต์เสมือนในสภาพแวดล้อมที่เฉพาะเจาะจงดังนี้
ชื่อ พอร์ต ชื่อแทนของโฮสต์ default80myorg-prod.apigee.netsecure443myorg-prod.apigee.net - คุณส่งคำขอ API ไปยัง
defaultVirtualHostโดยใช้ URLhttp://myorg-prod.apigee.net/weather - เนื่องจาก
ProxyEndpointไม่มีdefaultVirtualHostตามที่แสดงใน ตัวอย่างด้านบน คุณจึงได้รับโค้ดตอบกลับ404พร้อมข้อความแสดงข้อผิดพลาดต่อไปนี้{"fault":{"faultstring":"Unable to identify proxy for host: default and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}} - ไปที่ส่วนการแก้ปัญหาด้านล่างเพื่อแก้ไขปัญหานี้
- หากกำหนดค่า
ProxyEndpointให้ยอมรับคำขอในdefaultVirtualHostให้ไปที่สาเหตุถัดไป - เส้นทางที่ไม่ได้เชื่อมโยงกับพร็อกซี API ใดๆ
ความละเอียด
- เพิ่ม
VirtualHostที่ขาดหายไปในการกำหนดค่าProxyEndpointเพื่อ แก้ไขปัญหา สําหรับตัวอย่างที่แสดงด้านบน คุณสามารถเพิ่มค่าเริ่มต้นVirtualHostลงในการกําหนดค่าProxyEndpointได้ดังนี้<VirtualHost>default</VirtualHost>
ตัวอย่างการกำหนดค่าพร็อกซีปลายทางที่แสดงการเพิ่ม default> VirtualHost>

- หรือในตัวอย่างที่อ้างอิงข้างต้น หากคุณต้องการใช้เฉพาะ
secureVirtualHostสำหรับพร็อกซี API นี้โดยเฉพาะ ให้ส่งคำขอ API ไปยังsecureVirtualHostเท่านั้นโดยใช้โปรโตคอล HTTPS ดังนี้https://myorg-prod.apigee.net/weather
สาเหตุ: นำโฮสต์เสมือนออกในการแก้ไขพร็อกซี API ที่เพิ่งทําให้ใช้งานได้
หากมีการติดตั้งใช้งานการแก้ไขใหม่ของพร็อกซี API หลังจากนำโฮสต์เสมือนที่เฉพาะเจาะจงออก (ซึ่งเป็นส่วนหนึ่งของการแก้ไขที่ติดตั้งใช้งานก่อนหน้านี้) ซึ่งไคลเอ็นต์ยังคงใช้ เพื่อส่งคำขอ API ปัญหานี้อาจเกิดขึ้นได้
การวินิจฉัย
- ตรวจสอบการกำหนดค่าปลายทางพร็อกซีสำหรับพร็อกซี API เพื่อดูว่าพร็อกซี API ได้รับการกำหนดค่าให้ยอมรับคำขอสำหรับโฮสต์เสมือนที่ระบุในข้อผิดพลาดหรือไม่ ซึ่งระบุโดยองค์ประกอบ
VirtualHostในการกำหนดค่าProxyEndpoint - หากไม่มีโฮสต์เสมือนที่ระบุในข้อผิดพลาดในการกำหนดค่า
ProxyEndpointให้ทำตามขั้นตอนต่อไปนี้ หรือไปที่สาเหตุถัดไป - เส้นทางที่ไม่ได้เชื่อมโยงกับพร็อกซี API ใดๆ - เปรียบเทียบการกำหนดค่า
ProxyEndpointของรีวิชันที่ใช้งานก่อนหน้านี้กับรีวิชันที่ใช้งานอยู่ในปัจจุบัน- เช่น สมมติว่ารีวิชันที่ติดตั้งใช้งานก่อนหน้านี้คือ
5และรีวิชันที่ ติดตั้งใช้งานในปัจจุบันคือ6- โฮสต์เสมือนที่กำหนดค่าในพร็อกซีปลายทางในรีวิชัน 5
- โฮสต์เสมือนที่กำหนดค่าในพร็อกซีปลายทางในรีวิชัน 6
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection><HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> - ในตัวอย่างข้างต้น
VirtualHost vh1มีอยู่ในrevision 5,แต่ถูกนำออกในrevision 6และแทนที่ด้วยVirtualHost secure - ดังนั้นหากคุณหรือลูกค้าส่งคำขอไปยังพร็อกซี API นี้โดยใช้
VirtualHost vh1(ซึ่งเป็นส่วนหนึ่งของrevision 5) คุณจะได้รับโค้ดตอบกลับ404พร้อมข้อความแสดงข้อผิดพลาดต่อไปนี้{"fault":{"faultstring":"Unable to identify proxy for host: vh1 and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}}
- เช่น สมมติว่ารีวิชันที่ติดตั้งใช้งานก่อนหน้านี้คือ
- ตรวจสอบว่าการเปลี่ยนแปลงโฮสต์เสมือนเกิดขึ้นโดยเจตนาหรือ โดยไม่เจตนาในการแก้ไขที่ใช้งานอยู่ในปัจจุบัน และดำเนินการ ตามมาตรการที่เหมาะสมตามที่อธิบายไว้ในส่วนการแก้ปัญหา
ความละเอียด
หากพบว่ามีการนำโฮสต์เสมือนออกในการแก้ไขใหม่ อาจเป็นการตั้งใจหรืออาจเกิดจาก ความผิดพลาด สำหรับแต่ละกรณี ให้ทำตามขั้นตอนการแก้ปัญหา/ขั้นตอนที่แนะนำต่อไปนี้เพื่อแก้ไขปัญหา
สถานการณ์ #1: การเปลี่ยนแปลงที่ตั้งใจ
ในกรณีที่ต้องการนำโฮสต์เสมือนออก คุณสามารถเลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้ได้ โดยตัวเลือกแรกเป็นแนวทางที่แนะนำ
- สร้างพร็อกซีใหม่ที่มีเส้นทางฐานอื่นและใช้โฮสต์เสมือนอื่น (ที่ไม่มีอยู่ในการแก้ไขที่ทำให้ใช้งานได้ก่อนหน้านี้)
-
หากต้องการใช้พร็อกซี API ที่มีอยู่ต่อไป แต่ใช้โฮสต์เสมือนอื่น คุณควรเก็บโฮสต์เสมือนที่มีอยู่ไว้และเพิ่มโฮสต์เสมือนเพิ่มเติม
เพื่อให้มั่นใจว่าผู้ใช้พร็อกซี API นี้จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลง
หากต้องการใช้พร็อกซี API ที่มีอยู่และมีเพียงโฮสต์เสมือนที่แตกต่างกัน ให้ แจ้งให้ผู้ใช้ทราบล่วงหน้าและทำการเปลี่ยนแปลงนี้ในช่วงเวลาบำรุงรักษา
ซึ่งจะช่วยให้ผู้ใช้พร็อกซี API นี้ทราบถึงการเปลี่ยนแปลงและสามารถใช้โฮสต์เสมือนอื่นเพื่อทำการเรียกไปยังพร็อกซี API นี้ได้ ดังนั้น การเปลี่ยนแปลงนี้จึงไม่ส่งผลกระทบต่อแอปเหล่านั้น
สถานการณ์ที่ 2: การเปลี่ยนแปลงโดยไม่ตั้งใจ
ในกรณีที่นำโฮสต์เสมือนออกโดยไม่ได้ตั้งใจ ให้ทำดังนี้
- อัปเดต
ProxyEndpointการกำหนดค่าในการแก้ไขที่กําลังใช้งานอยู่ให้ใช้ โฮสต์เสมือนเดียวกันกับที่ใช้ในการแก้ไขที่ใช้งานก่อนหน้านี้ ในตัวอย่าง ด้านบน ให้เปลี่ยนส่วนต่อไปนี้จาก<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection>ถึง
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection> - ทำให้เวอร์ชันก่อนหน้าใช้งานได้อีกครั้ง
แนวทางปฏิบัติแนะนำ
เราขอแนะนำให้ติดตั้งพร็อกซีใหม่หรือการแก้ไขใหม่ในช่วงเวลาบำรุงรักษา หรือเมื่อคาดว่าการเข้าชมจะน้อยที่สุด เพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นระหว่างการติดตั้ง หรือลดผลกระทบต่อการเข้าชมให้เหลือน้อยที่สุด
สาเหตุ: เส้นทางไม่ได้เชื่อมโยงกับพร็อกซี API ใดๆ
หากไม่ได้กำหนดค่าพร็อกซี API ให้ยอมรับคำขอสำหรับเส้นทางที่เฉพาะเจาะจงซึ่งใช้ใน
URL ของคำขอ API เราจะได้รับการตอบกลับ 404 Not Found พร้อมข้อความแสดงข้อผิดพลาด
Unable to identify proxy for host: VIRTUAL_HOST and url: PATH.
การวินิจฉัย
- ดู
ProxyEndpointการกำหนดค่าสำหรับพร็อกซี API ที่เฉพาะเจาะจงซึ่งคุณต้องการ สร้างคำขอ API - ตรวจสอบว่าได้กำหนดค่าพร็อกซี API ให้ยอมรับคำขอสำหรับเส้นทางที่เฉพาะเจาะจงซึ่งระบุไว้ ในข้อความแสดงข้อผิดพลาดหรือไม่ โดยทำตามขั้นตอนใน สถานการณ์ #1 และ สถานการณ์ #2
สถานการณ์ #1: เส้นทางไม่ตรงกับ basepath ของพร็อกซี API
- หาก
pathที่ระบุในข้อความแสดงข้อผิดพลาดไม่เหมือนกับbasepathของพร็อกซี API ที่เฉพาะเจาะจง หรือไม่ได้ขึ้นต้นด้วยbasepathแสดงว่า อาจเป็นสาเหตุของข้อผิดพลาด - มาดูตัวอย่างเพื่ออธิบายเรื่องนี้กัน
basepathของพร็อกซี API ที่ต้องการคือ/weather- URL ของคำขอ API คือ
https://myorg-prod.apigee.net/climateซึ่งหมายความว่า เส้นทางที่ใช้ใน URL ของคำขอ API คือ/climate. - ในตัวอย่างนี้
pathไม่เหมือนกับbasepathและไม่ได้ขึ้นต้นด้วยbasepathดังนั้นคุณจึงได้รับข้อผิดพลาดต่อไปนี้{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/climate", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
ความละเอียด
- ตรวจสอบว่า
pathที่ใช้ใน URL คำขอ API ตรงกับbasepathของพร็อกซี API ที่เฉพาะเจาะจง - ในตัวอย่างข้างต้น URL ของคำขอ API ควรมีลักษณะดังนี้
{ https://myorg-prod.apigee.net/weather
สถานการณ์ #2: เส้นทางไม่ตรงกับเวิร์กโฟลว์แบบมีเงื่อนไขที่มีอยู่
- หาก
pathที่ใช้ใน URL ของคำขอ API ขึ้นต้นด้วยbasepathก็เป็นไปได้ว่าpath suffix(ส่วนที่อยู่หลังbasepath) ที่ระบุไว้ในข้อความแสดงข้อผิดพลาดไม่ตรงกับโฟลว์แบบมีเงื่อนไขใดๆ ซึ่งอาจทำให้เกิดข้อผิดพลาด404 - มาดูตัวอย่างเพื่ออธิบายเรื่องนี้กัน
basepathของพร็อกซี API ที่ต้องการคือ/weather- URL ของคำขอ API คือ
https://myorg-prod.apigee.net/weather/Delhiซึ่งหมายความว่า เส้นทางที่ใช้ใน URL ของคำขอ API คือ/weather/Delhi.
- ในตัวอย่างนี้
pathเริ่มต้นด้วยbasepath/weatherนอกจากนี้ ยังมีpath suffixเป็น/Delhiด้วย - ตอนนี้ให้ตรวจสอบว่ามีโฟลว์แบบมีเงื่อนไขใน
ProxyEndpointหรือไม่ - หากไม่มีโฟลว์แบบมีเงื่อนไขหรือมีโฟลว์แบบไม่มีเงื่อนไขเพียงไม่กี่โฟลว์ ให้ไปที่สาเหตุถัดไป - พร็อกซี API ไม่ได้ติดตั้งใช้งานในสภาพแวดล้อม
- หาก
ProxyEndpointมีเฉพาะโฟลว์แบบมีเงื่อนไข ให้ตรวจสอบสิ่งต่อไปนี้- หากเงื่อนไขในโฟลว์แบบมีเงื่อนไขทั้งหมดเหล่านี้ตรวจสอบ
proxy.pathsuffixที่เฉพาะเจาะจง (เส้นทางหลังจาก basepath) - และหาก
path suffixที่ระบุใน URL ของคำขอ API ไม่ตรงกับเงื่อนไขใดๆ ก็จะเป็นสาเหตุของข้อผิดพลาด
- หากเงื่อนไขในโฟลว์แบบมีเงื่อนไขทั้งหมดเหล่านี้ตรวจสอบ
- สมมติว่าเรามี 2 โฟลว์ใน
ProxyEndpointและทั้ง 2 โฟลว์เป็นโฟลว์แบบมีเงื่อนไข ดังที่แสดงด้านล่าง<Condition>(proxy.pathsuffix MatchesPath "/Bangalore") and (request.verb = "GET")</Condition> <Condition>(proxy.pathsuffix MatchesPath "/Chennai") and (request.verb = "GET")</Condition>
- ในตัวอย่างที่แสดงด้านบน เรามีโฟลว์แบบมีเงื่อนไข 2 รายการ โดยรายการหนึ่งตรงกับ
proxy.pathsuffix(เส้นทางหลังจาก basepath) กับ/Bangaloreและอีกรายการตรงกับ/Chennaiแต่ไม่มีรายการใดที่ตรงกับ/Delhiซึ่งเป็นpath suffixที่ส่งใน URL ของคำขอ API - นี่คือสาเหตุของข้อผิดพลาด
404ดังนั้นคุณจะได้รับข้อผิดพลาดต่อไปนี้{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/weather\/Delhi", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
- ในตัวอย่างที่แสดงด้านบน เรามีโฟลว์แบบมีเงื่อนไข 2 รายการ โดยรายการหนึ่งตรงกับ
ความละเอียด
- ตรวจสอบว่า
path suffixตรงกับโฟลว์แบบมีเงื่อนไขอย่างน้อย 1 รายการในปลายทางพร็อกซี - ในตัวอย่างข้างต้น คุณสามารถใช้วิธีต่อไปนี้เพื่อแก้ไขข้อผิดพลาด
- หากต้องการใช้นโยบายชุดใดชุดหนึ่งสำหรับเส้นทาง
/Delhiให้เพิ่มโฟลว์แยกต่างหากที่มีชุดนโยบายที่จำเป็น และตรวจสอบว่ามีเงื่อนไข ที่ตรงกับ/proxy.pathsuffix/Delhiดังที่แสดงด้านล่าง<Condition>(proxy.pathsuffix MatchesPath "/Delhi") and (request.verb = "GET")</Condition>
- หากต้องการเรียกใช้ชุดนโยบายทั่วไปสำหรับเส้นทาง
/Delhiในโฟลว์ทั่วไป ให้ตรวจสอบว่ามีเงื่อนไขที่อนุญาตให้ใช้/proxy.pathsuffixทั่วไป กล่าวคือ จะอนุญาตเส้นทางใดก็ได้หลังจากbasepath/weatherดังที่แสดงด้านล่าง<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
- หากต้องการใช้นโยบายชุดใดชุดหนึ่งสำหรับเส้นทาง
หาก ProxyEndpoint มี basepath ที่ถูกต้องและ path suffix ที่ระบุใน URL ของ API
ตรงกับโฟลว์แบบมีเงื่อนไขใดโฟลว์หนึ่ง ให้ไปที่สาเหตุถัดไป -
ไม่ได้ติดตั้งใช้งานพร็อกซี API ในสภาพแวดล้อม
สาเหตุ: ไม่ได้ทําให้พร็อกซี API ใช้งานได้ในสภาพแวดล้อม
การวินิจฉัย
- กำหนดสภาพแวดล้อมที่มีชื่อแทนโฮสต์ที่ใช้ใน URL ของคำขอ API
โดยคุณสามารถทำได้โดยตรวจสอบรายละเอียดของโฮสต์เสมือนทั้งหมดในแต่ละสภาพแวดล้อม
ขององค์กรใน UI ของ Edge
ตัวอย่างเช่น สมมติว่ามีการกำหนดค่าต่อไปนี้
- หาก
http://myorg-prod.apigee.net/weatherคือ URL ของคุณmyorg-prod.apigee.netจะเป็นชื่อแทนของโฮสต์ - มีการกำหนดค่านามแฝงโฮสต์
myorg-prod.apigee.netเป็นส่วนหนึ่งของ โฮสต์เสมือนรายการใดรายการหนึ่งในสภาพแวดล้อมprodขององค์กร
- หาก
- ตรวจสอบว่ามีการติดตั้งใช้งานพร็อกซี API ที่เฉพาะเจาะจงในสภาพแวดล้อมที่เฉพาะเจาะจงซึ่งกำหนดไว้ใน ขั้นตอนที่ 1 ด้านบนหรือไม่
- หากไม่ได้ติดตั้งใช้งานพร็อกซี API ในสภาพแวดล้อมที่เฉพาะเจาะจง นั่นคือสาเหตุของข้อผิดพลาด
404- ดังนั้นในตัวอย่างที่ใช้ในขั้นตอนที่ 1 ข้างต้น สมมติว่าไม่ได้ติดตั้งใช้งานพร็อกซี API ในสภาพแวดล้อม
prodนั่นคือสาเหตุของข้อผิดพลาด - ไปที่ส่วนความละเอียดด้านล่าง
- ดังนั้นในตัวอย่างที่ใช้ในขั้นตอนที่ 1 ข้างต้น สมมติว่าไม่ได้ติดตั้งใช้งานพร็อกซี API ในสภาพแวดล้อม
- หากพร็อกซี API ได้รับการติดตั้งใช้งานในสภาพแวดล้อมที่เฉพาะเจาะจง ให้ไปที่สาเหตุถัดไป - ไม่ได้โหลดสภาพแวดล้อมในเครื่องมือประมวลผลข้อความ
ความละเอียด
ทําให้พร็อกซี API ใช้งานได้ในสภาพแวดล้อมที่เฉพาะเจาะจงซึ่งคุณตั้งใจจะส่งคําขอ API
สาเหตุ: โหลดสภาพแวดล้อมในตัวประมวลผลข้อความไม่สำเร็จ
การวินิจฉัย
- เข้าสู่ระบบ Message Processor แต่ละรายการ แล้วตรวจสอบว่าสภาพแวดล้อมที่เฉพาะเจาะจงซึ่งคุณ
กำลังส่งคำขอ API โหลดอยู่ใน Message Processor หรือไม่โดยใช้คำสั่งต่อไปนี้
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
- หากสภาพแวดล้อมที่เฉพาะเจาะจงแสดงเป็นส่วนหนึ่งของคำสั่งข้างต้น ให้ไปที่สาเหตุถัดไป - ไม่ได้ติดตั้งใช้งานพร็อกซี API ใน Message Processor อย่างน้อย 1 รายการ
- หากไม่มีสภาพแวดล้อมที่เฉพาะเจาะจงในรายการ ให้ตรวจสอบ
/opt/apigee/var/log/edge-message-processor/logs/system.logและ/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.logใน Message Processors เพื่อดูข้อผิดพลาดระหว่างการโหลดสภาพแวดล้อม - ข้อผิดพลาดหลายอย่างอาจทำให้โหลดสภาพแวดล้อมใน Message Processor ไม่สำเร็จ การแก้ปัญหาจะขึ้นอยู่กับข้อผิดพลาดที่เกิดขึ้น
ความละเอียด
ระบบอาจโหลดสภาพแวดล้อมใน Message Processor ไม่ได้เนื่องจากสาเหตุหลายประการ ส่วนนี้ จะอธิบายสาเหตุที่เป็นไปได้ 2 ประการที่อาจทำให้เกิดปัญหานี้ และอธิบายวิธีแก้ปัญหา ดังกล่าว
-
หากคุณเห็นข้อผิดพลาดต่อไปนี้ในบันทึกของ Message Processor แสดงว่าเกิดจากปัญหาที่พบกับใบรับรอง/คีย์ที่เพิ่มลงในที่เก็บคีย์/ที่เก็บที่เชื่อถือที่ระบุในสภาพแวดล้อมที่ระบุ
ข้อผิดพลาด #1: java.security.KeyStoreException: Cannot overwrite own certificate
2018-01-30 12:04:38,248 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mycert in key store : mytruststore in environment : test at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.AbstractConfigurator.propagateEvent(AbstractConfigurator.java:85) ~[config-entities-1.0.0.jar:na] at com.apigee.messaging.runtime.Environment.handleUpdate(Environment.java:238) [message-processor-1.0.0.jar:na] … Caused by: java.security.KeyStoreException: Cannot overwrite own certificate at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:355) ~[sunjce_provider.jar:1.8.0_151] at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_151] at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na]
... 20 common frames omitted2018-01-30 12:04:38,250 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
ข้อผิดพลาด #2: java.security.KeyStoreException: เขียนทับคีย์ลับไม่ได้
2017-11-01 03:28:47,560 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mstore in key store : myTruststore in environment : dev at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] ... Caused by: java.security.KeyStoreException: Cannot overwrite secret key at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:354) ~[sunjce_provider.jar:1.8.0_144] at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_144] at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na] ... 20 common frames omitted 2017-11-01 03:28:47,562 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
- รับรายละเอียดของที่เก็บคีย์/ที่เก็บที่เชื่อถือที่ระบุในข้อความแสดงข้อผิดพลาดที่แสดงใน
ขั้นตอนก่อนหน้าโดยใช้การเรียก Management API ต่อไปนี้
curl -v "http://<management-IPaddress>:8080/v1/organizations/<org-name>/environments/<env-name>/keystores/myTruststore" -u <user>
ตัวอย่างเอาต์พุต:
{ "certs":[ "mycert", "mycert-new" ], "keys":[ "mycert" ], "name":"myTruststore" } - เอาต์พุตตัวอย่างแสดงว่ามีใบรับรองและคีย์ 2 รายการใน Truststore
myTruststoreโดยทั่วไปแล้ว Truststore จะไม่มีคีย์ หากเป็นเช่นนั้น คุณควรมีใบรับรองและคีย์เพียงรายการเดียว - ดูรายละเอียดเกี่ยวกับใบรับรองทั้ง 2 รายการโดยใช้ API ต่อไปนี้
curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
- ตรวจสอบวันที่หมดอายุของใบรับรองแต่ละรายการและระบุใบรับรองที่หมดอายุ/เก่ากว่า
- ลบใบรับรองที่หมดอายุหรือไม่ต้องการออกจาก Truststore
myTruststore
หากปัญหายังคงอยู่หรือคุณเห็นข้อผิดพลาดอื่นนอกเหนือจากที่กล่าวถึงในขั้นตอนที่ 1 ด้านบน ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
สาเหตุ: ไม่ได้ ติดตั้งใช้งานพร็อกซี API ใน Message Processor อย่างน้อย 1 รายการ
อาจไม่ได้ติดตั้งใช้งานพร็อกซี API ใน Message Processor อย่างน้อย 1 รายการ ปัญหานี้เกิดขึ้นได้ยากมาก และส่วนใหญ่เกิดจากการไม่มีการแจ้งเตือนเหตุการณ์จากเซิร์ฟเวอร์การจัดการไปยัง Message Processor ในระหว่างการติดตั้งใช้งานพร็อกซี API ที่เฉพาะเจาะจง ในกรณีนี้ คุณจะ สร้างเซสชันการติดตามใน UI ของ Edge ไม่ได้เช่นกัน
การวินิจฉัย
- เข้าสู่ระบบ Message Processor แต่ละรายการ แล้วตรวจสอบว่ามีการทำให้ใช้งานได้การแก้ไขเฉพาะของ
พร็อกซี API หรือไม่โดยใช้คำสั่งต่อไปนี้
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
- หากการแก้ไขพร็อกซี API ที่เฉพาะเจาะจงไม่แสดงเป็นเอาต์พุตของคำสั่ง ที่กล่าวถึงในขั้นตอนที่ 1 ข้างต้น ให้รีสตาร์ท Message Processor ที่เฉพาะเจาะจงตามที่อธิบายไว้ใน การแก้ปัญหา
- ทำขั้นตอนที่ 1-2 ซ้ำสำหรับ Message Processor ทั้งหมด
- หากมีการติดตั้งใช้งานการแก้ไขพร็อกซี API ที่เฉพาะเจาะจงใน Message Processor ทั้งหมด แสดงว่า นี่ไม่ใช่สาเหตุของปัญหานี้ ไปที่ ต้องรวบรวมข้อมูลการวินิจฉัย
ความละเอียด
รีสตาร์ทตัวประมวลผลข้อความที่เฉพาะเจาะจงซึ่งไม่ได้ติดตั้งใช้งานการแก้ไขที่เฉพาะเจาะจงของพร็อกซี API
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
วินิจฉัยปัญหาโดยใช้การตรวจสอบ API
การตรวจสอบ API ช่วยให้คุณแยกแยะพื้นที่ที่มีปัญหาได้อย่างรวดเร็ว เพื่อวินิจฉัยปัญหาด้านข้อผิดพลาด ประสิทธิภาพ และเวลาในการตอบสนอง รวมถึงแหล่งที่มาของปัญหา เช่น แอปของนักพัฒนาซอฟต์แวร์ พร็อกซี API เป้าหมายแบ็กเอนด์ หรือแพลตฟอร์ม API
สำหรับปัญหานี้ คุณสามารถไปที่หน้าการตรวจสอบ API > ตรวจสอบ แล้ว เลือกวันที่ พร็อกซี และอื่นๆ ที่เหมาะสม คุณอาจเห็นรายละเอียดต่อไปนี้
- รหัสข้อบกพร่อง:
messaging.adaptors.http.flow.ApplicationNotFound - รหัสสถานะ:
404 - แหล่งที่มาของข้อบกพร่อง:
ApigeeหรือMP
นอกจากนี้ คุณยังคลิกดูบันทึกตามที่แสดงในภาพหน้าจอด้านบนเพื่อตรวจสอบเพิ่มเติมได้ด้วย

ดูสถานการณ์ตัวอย่างจะแสดงวิธี
แก้ปัญหา 5xx เกี่ยวกับ API โดยใช้การตรวจสอบ API เช่น คุณอาจ
ต้องการตั้งค่าการแจ้งเตือนเพื่อให้ได้รับการแจ้งเตือนเมื่อจำนวนรหัสสถานะ 404 เกิน
เกณฑ์ที่เฉพาะเจาะจง
ต้องรวบรวมข้อมูลการวินิจฉัย
หากยังพบปัญหาเดิมอยู่แม้จะทำตามวิธีการข้างต้นแล้ว โปรดรวบรวม ข้อมูลการวินิจฉัยต่อไปนี้ โปรดติดต่อและแชร์ข้อมูลนี้กับทีมสนับสนุนของ Apigee Edge
- หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ โปรดระบุข้อมูลต่อไปนี้
- ชื่อองค์กร
- ชื่อสภาพแวดล้อม
- ชื่อพร็อกซี API
- คำสั่ง curl ที่สมบูรณ์เพื่อสร้างข้อผิดพลาดซ้ำ
- หากคุณเป็นผู้ใช้ Private Cloud โปรดระบุข้อมูลต่อไปนี้
- ข้อความแสดงข้อผิดพลาดทั้งหมดที่พบ
- ชื่อสภาพแวดล้อม
- แพ็กเกจพร็อกซี API
- บันทึกของ Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log - เอาต์พุตของคำสั่งต่อไปนี้ใน Message Processor แต่ละรายการ
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions - รายละเอียดเกี่ยวกับส่วนในเพลย์บุ๊กนี้ที่คุณได้ลองใช้แล้ว รวมถึงข้อมูลเชิงลึกอื่นๆ ที่จะช่วยให้เราแก้ปัญหานี้ได้อย่างรวดเร็ว