คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
Edge Microgateway เวอร์ชัน 2.5.x
หัวข้อนี้จะกล่าวถึงวิธีจัดการและกำหนดค่า Edge Microgateway
การอัปเกรด Edge Microgateway หากมีการเชื่อมต่ออินเทอร์เน็ต
- เรียกใช้คำสั่ง
npm
ต่อไปนี้เพื่ออัปเกรดเป็น Edge Microgateway เวอร์ชันล่าสุด:npm upgrade edgemicro -g
หากต้องการอัปเกรดเป็น Edge Microgateway เวอร์ชันที่เฉพาะเจาะจง คุณจะต้องระบุหมายเลขเวอร์ชันในคำสั่งการอัปเกรด หากไม่ระบุหมายเลขเวอร์ชัน ระบบจะติดตั้งเวอร์ชันล่าสุด เช่น หากต้องการอัปเกรดเป็นเวอร์ชัน 2.5.26 ให้ใช้คำสั่งต่อไปนี้
npm upgrade edgemicro@2.5.26 -g
- โปรดตรวจสอบหมายเลขเวอร์ชัน ตัวอย่างเช่น หากคุณติดตั้งเวอร์ชัน 2.5.26:
edgemicro --version current nodejs version is v8.9.0 current edgemicro version is 2.5.26
- ขั้นสุดท้าย ให้อัปเกรดพร็อกซี edgemicro-auth เป็นเวอร์ชันล่าสุด
edgemicro upgradeauth -o org_name -e env_name -u username
เปลี่ยนแปลงการกําหนดค่า
ไฟล์การกำหนดค่าที่คุณต้องทราบมีดังนี้
- ไฟล์การกำหนดค่าระบบเริ่มต้น
- ไฟล์การกำหนดค่าเริ่มต้นสำหรับอินสแตนซ์ Edge Microgateway ที่เริ่มต้นใหม่
- ไฟล์การกำหนดค่าแบบไดนามิกสำหรับอินสแตนซ์ที่ทำงานอยู่
ส่วนนี้จะอธิบายเกี่ยวกับไฟล์เหล่านี้และสิ่งที่คุณจำเป็นต้องทราบเกี่ยวกับการเปลี่ยนแปลงไฟล์ดังกล่าว
ไฟล์การกำหนดค่าระบบเริ่มต้น
เมื่อติดตั้ง Edge Microgateway ไฟล์การกำหนดค่าระบบเริ่มต้นจะวางไว้ที่นี่
prefix/lib/node_modules/edgemicro/config/default.yaml
โดย prefix คือไดเรกทอรีคำนำหน้า npm
โปรดดู
ติดตั้ง Edge Microgateway ไว้ที่ใดหากคุณไม่พบไดเรกทอรีนี้
หากเปลี่ยนไฟล์การกำหนดค่าของระบบ คุณจะต้องเริ่มต้น กำหนดค่า และรีสตาร์ท Edge Microgateway ดังนี้
edgemicro initedgemicro configure [params]
edgemicro start [params]
ไฟล์การกำหนดค่าเริ่มต้นสำหรับอินสแตนซ์ Edge Microgateway ที่เริ่มต้นใหม่
เมื่อเรียกใช้ edgemicro init
ไฟล์การกำหนดค่าระบบ (ตามที่อธิบายไว้ด้านบน) default.yaml
จะอยู่ในไดเรกทอรี ~/.edgemicro
หากเปลี่ยนไฟล์การกำหนดค่าใน ~/.edgemicro
คุณต้องกำหนดค่าอีกครั้งและรีสตาร์ท Edge Microgateway ดังนี้
edgemicro stopedgemicro configure [params]
edgemicro start [params]
ไฟล์การกำหนดค่าแบบไดนามิกสำหรับอินสแตนซ์ที่ทำงานอยู่
เมื่อเรียกใช้ edgemicro configure [params]
ระบบจะสร้างไฟล์การกำหนดค่าแบบไดนามิกใน ~/.edgemicro
ไฟล์จะตั้งชื่อตามรูปแบบนี้ org-env-config.yaml
โดยที่ org และ env คือชื่อองค์กรและสภาพแวดล้อม Apigee Edge ของคุณ คุณสามารถใช้ไฟล์นี้เพื่อทำการเปลี่ยนแปลงการกำหนดค่า แล้วโหลดอีกครั้งโดยไม่มีช่วงพัก ตัวอย่างเช่น หากคุณเพิ่มและกำหนดค่าปลั๊กอิน คุณจะโหลดการกำหนดค่าซ้ำได้โดยไม่เกิดช่วงพักการใช้งานตามที่อธิบายไว้ด้านล่าง
หาก Edge Microgateway ทำงานอยู่ (ตัวเลือกช่วงพักเป็นศูนย์)
- โหลดการกำหนดค่า Edge Microgateway ซ้ำ:
edgemicro reload -o org_name -e env_name -k key -s secret
โดยที่
- org_name คือชื่อองค์กร Edge ของคุณ (คุณต้องเป็นผู้ดูแลระบบองค์กร)
- env_name คือสภาพแวดล้อมในองค์กร (เช่น "test" หรือ "prod")
- key เป็นคีย์ที่แสดงผลก่อนหน้านี้โดยคำสั่งการกำหนดค่า
- secret เป็นคีย์ที่แสดงผลก่อนหน้านี้โดยคำสั่งการกำหนดค่า
เช่น
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
หาก Edge Microgateway หยุดทำงาน:
- รีสตาร์ท Edge Microgateway:
edgemicro start -o org_name -e env_name -k key -s secret
โดยที่
- org_name คือชื่อองค์กร Edge ของคุณ (คุณต้องเป็นผู้ดูแลระบบองค์กร)
- env_name คือสภาพแวดล้อมในองค์กรของคุณ (เช่น "test" หรือ "prod")
- key เป็นคีย์ที่แสดงผลก่อนหน้านี้โดยคำสั่งการกำหนดค่า
- secret เป็นคีย์ที่แสดงผลก่อนหน้านี้โดยคำสั่งการกำหนดค่า
เช่น
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
ตัวอย่างไฟล์การกำหนดค่า โปรดดูรายละเอียดเกี่ยวกับการตั้งค่าไฟล์การกำหนดค่าที่ข้อมูลอ้างอิงการกำหนดค่า Edge Microgateway
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
การตั้งค่าตัวแปรสภาพแวดล้อม
คำสั่งของอินเทอร์เฟซบรรทัดคำสั่งที่ต้องมีค่าสำหรับองค์กรและสภาพแวดล้อม Edge รวมถึงเก็บคีย์และข้อมูลลับที่จำเป็นสำหรับการเริ่มต้น Edge Microgateway ไว้ในตัวแปรสภาพแวดล้อมเหล่านี้ได้
EDGEMICRO_ORG
EDGEMICRO_ENV
EDGEMICRO_KEY
EDGEMICRO_SECRET
การตั้งค่าตัวแปรเหล่านี้เป็นตัวเลือกที่ไม่บังคับ หากคุณตั้งค่าไว้ คุณไม่ต้องระบุค่าเมื่อใช้ Command-Line Interface (CLI) เพื่อกำหนดค่าและเริ่ม Edge Microgateway
การกำหนดค่า SSL ในเซิร์ฟเวอร์ Edge Microgateway
คุณสามารถกำหนดค่าเซิร์ฟเวอร์ Microgateway ให้ใช้ SSL เช่น เมื่อกำหนดค่า SSL แล้ว คุณจะเรียกใช้ API ผ่าน Edge Microgateway ด้วยโปรโตคอล "https" ได้ ดังตัวอย่างต่อไปนี้
https://localhost:8000/myapi
หากต้องการกำหนดค่า SSL ในเซิร์ฟเวอร์ Microgateway ให้ทำตามขั้นตอนต่อไปนี้:
- สร้างหรือรับใบรับรอง SSL และคีย์โดยใช้ยูทิลิตี openssl หรือวิธีที่คุณต้องการ
- เพิ่มแอตทริบิวต์
edgemicro:ssl
ในไฟล์การกำหนดค่า Edge Microgateway ดูรายการตัวเลือกทั้งหมดได้ในตารางด้านล่าง ตัวอย่างเช่น
edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- รีสตาร์ท Edge Microgateway ทำตามขั้นตอนที่ระบุไว้ในส่วนเปลี่ยนแปลงการกำหนดค่าโดยขึ้นอยู่กับไฟล์การกำหนดค่าที่คุณแก้ไข ซึ่งอาจเป็นไฟล์เริ่มต้นหรือไฟล์การกำหนดค่ารันไทม์
ต่อไปนี้คือตัวอย่างของส่วน edgemicro
ของไฟล์การกำหนดค่าที่มีการกำหนดค่า SSL ไว้
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
รายการตัวเลือกเซิร์ฟเวอร์ทั้งหมดที่รองรับมีดังนี้
ตัวเลือก | คำอธิบาย |
---|---|
key |
เส้นทางไปยังไฟล์ ca.key (ในรูปแบบ PEM) |
cert |
เส้นทางไปยังไฟล์ ca.cert (ในรูปแบบ PEM) |
pfx |
เส้นทางไปยังไฟล์ pfx ที่มีคีย์ส่วนตัว ใบรับรอง และใบรับรอง CA ของไคลเอ็นต์ในรูปแบบ PFX |
passphrase |
สตริงที่มีข้อความรหัสผ่านสำหรับคีย์ส่วนตัวหรือ PFX |
ca |
เส้นทางไปยังไฟล์ที่มีรายการใบรับรองที่เชื่อถือได้ในรูปแบบ PEM |
ciphers |
สตริงที่อธิบายการเข้ารหัสที่จะใช้โดยคั่นด้วย ":" |
rejectUnauthorized |
หากเป็น "จริง" ใบรับรองเซิร์ฟเวอร์จะได้รับการยืนยันกับรายการ CA ที่ระบุ หากยืนยันไม่สำเร็จ ระบบจะแสดงข้อผิดพลาด |
secureProtocol |
วิธี SSL ที่จะใช้ เช่น SSLv3_method เพื่อบังคับใช้ SSL เวอร์ชัน 3 |
servername |
ชื่อเซิร์ฟเวอร์สำหรับส่วนขยาย TLS แบบ SNI (การระบุชื่อเซิร์ฟเวอร์) |
requestCert |
จริงสำหรับ SSL แบบ 2 ทาง เท็จสำหรับ SSL แบบทางเดียว |
การใช้ตัวเลือก SSL/TLS ของไคลเอ็นต์
คุณกำหนดค่า Edge Microgateway เป็นไคลเอ็นต์ TLS หรือ SSL ได้เมื่อเชื่อมต่อกับปลายทางเป้าหมาย ในไฟล์การกำหนดค่า Microgateway ให้ใช้องค์ประกอบเป้าหมายเพื่อตั้งค่าตัวเลือก SSL/TLS
ตัวอย่างนี้มีการตั้งค่าที่จะนำไปใช้กับโฮสต์ทั้งหมด
edgemicro: ... targets: ssl: client: key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt passphrase: admin123 rejectUnauthorized: true
ในตัวอย่างนี้ การตั้งค่าจะมีผลกับโฮสต์ที่ระบุเท่านั้น
edgemicro: ... targets: - host: 'myserver.example.com' ssl: client: key: /Users/myname/twowayssl/ssl/client.key cert: /Users/myname/twowayssl/ssl/ca.crt passphrase: admin123 rejectUnauthorized: true
ต่อไปนี้คือตัวอย่างของ TLS
edgemicro: ... targets: - host: 'myserver.example.com' tls: client: pfx: /Users/myname/twowayssl/ssl/client.pfx passphrase: admin123 rejectUnauthorized: true
รายการตัวเลือกไคลเอ็นต์ทั้งหมดที่รองรับมีดังนี้
ตัวเลือก | คำอธิบาย |
---|---|
pfx |
เส้นทางไปยังไฟล์ pfx ที่มีคีย์ส่วนตัว ใบรับรอง และใบรับรอง CA ของไคลเอ็นต์ในรูปแบบ PFX |
key |
เส้นทางไปยังไฟล์ ca.key (ในรูปแบบ PEM) |
passphrase |
สตริงที่มีข้อความรหัสผ่านสำหรับคีย์ส่วนตัวหรือ PFX |
cert |
เส้นทางไปยังไฟล์ ca.cert (ในรูปแบบ PEM) |
ca |
เส้นทางไปยังไฟล์ที่มีรายการใบรับรองที่เชื่อถือได้ในรูปแบบ PEM |
ciphers |
สตริงที่อธิบายการเข้ารหัสที่จะใช้โดยคั่นด้วย ":" |
rejectUnauthorized |
หากเป็น "จริง" ใบรับรองเซิร์ฟเวอร์จะได้รับการยืนยันกับรายการ CA ที่ระบุ หากยืนยันไม่สำเร็จ ระบบจะแสดงข้อผิดพลาด |
secureProtocol |
วิธี SSL ที่จะใช้ เช่น SSLv3_method เพื่อบังคับใช้ SSL เวอร์ชัน 3 |
servername |
ชื่อเซิร์ฟเวอร์สำหรับส่วนขยาย TLS แบบ SNI (การระบุชื่อเซิร์ฟเวอร์) |
การปรับแต่งพร็อกซีการตรวจสอบสิทธิ์ edgemicro-auth
โดยค่าเริ่มต้น Edge Microgateway จะใช้พร็อกซีที่ทำให้ใช้งานได้ใน Apigee Edge สำหรับการตรวจสอบสิทธิ์ OAuth2
ทำให้พร็อกซีนี้ใช้งานได้เมื่อคุณเรียกใช้ edgemicro configure
ครั้งแรก คุณสามารถเปลี่ยนการกำหนดค่าเริ่มต้นของพร็อกซีนี้เพื่อเพิ่มการสนับสนุนสำหรับการอ้างสิทธิ์ที่กำหนดเองให้กับ JSON Web Token (JWT) กำหนดค่าการหมดอายุของโทเค็น และสร้างโทเค็นการรีเฟรช โปรดดูรายละเอียดที่หน้า edgemicro-auth ใน GitHub
การใช้บริการตรวจสอบสิทธิ์ที่กำหนดเอง
โดยค่าเริ่มต้น Edge Microgateway จะใช้พร็อกซีที่ทำให้ใช้งานได้ใน Apigee Edge สำหรับการตรวจสอบสิทธิ์ OAuth2
ทำให้พร็อกซีนี้ใช้งานได้เมื่อคุณเรียกใช้ edgemicro configure
ครั้งแรก โดยค่าเริ่มต้น URL ของพร็อกซีนี้จะระบุอยู่ในไฟล์การกำหนดค่า Edge Microgateway ดังนี้
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
หากต้องการใช้บริการที่กำหนดเองเพื่อจัดการการตรวจสอบสิทธิ์ ให้เปลี่ยนค่า authUri
ในไฟล์การกำหนดค่าให้ชี้ไปยังบริการ เช่น คุณอาจมีบริการที่ใช้ LDAP เพื่อยืนยันตัวตน
การจัดการไฟล์บันทึก
Edge Microgateway จะบันทึกข้อมูลเกี่ยวกับคำขอและการตอบกลับแต่ละรายการ ไฟล์บันทึกจะให้ข้อมูลที่เป็นประโยชน์ในการแก้ไขข้อบกพร่องและการแก้ปัญหา
ตำแหน่งที่เก็บไฟล์บันทึก
โดยค่าเริ่มต้น ไฟล์บันทึกจะจัดเก็บไว้ใน /var/tmp
วิธีเปลี่ยนไดเรกทอรีของไฟล์บันทึกเริ่มต้น
ไดเรกทอรีที่เก็บไฟล์บันทึกมีการระบุไว้ในไฟล์การกำหนดค่า Edge Microgateway ดูเพิ่มเติมที่การเปลี่ยนแปลงการกำหนดค่า
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
เปลี่ยนค่า dir เพื่อระบุไดเรกทอรีของไฟล์บันทึกอื่น
ส่งบันทึกไปยังคอนโซล
คุณอาจกำหนดค่าการบันทึกเพื่อให้ส่งข้อมูลบันทึกไปยังเอาต์พุตมาตรฐานแทนที่จะส่งไปยังไฟล์บันทึกได้ ตั้งค่าแฟล็ก to_console
เป็น "จริง" ดังนี้
edgemicro: logging: to_console: true
เมื่อใช้การตั้งค่านี้ ระบบจะส่งบันทึกไปยังแบบมาตรฐาน ขณะนี้คุณจะส่งบันทึกไปยังทั้ง Stdout และไฟล์บันทึกไม่ได้
วิธีตั้งค่าระดับการบันทึก
คุณตั้งค่าระดับการบันทึกเหล่านี้ได้: ข้อมูล คำเตือน และข้อผิดพลาด ขอแนะนำให้ใช้ระดับข้อมูล โดยจะบันทึกคำขอและการตอบกลับจาก API ทั้งหมด ซึ่งเป็นค่าเริ่มต้น
วิธีเปลี่ยนช่วงเวลาบันทึก
คุณจะกำหนดค่าช่วงเวลาเหล่านี้ได้ในไฟล์การกำหนดค่า Edge Microgateway ดูเพิ่มเติมที่การเปลี่ยนแปลงการกำหนดค่า
แอตทริบิวต์ที่กำหนดค่าได้มีดังนี้
- stats_log_interval: (ค่าเริ่มต้น: 60) ช่วงเวลาในหน่วยวินาทีที่มีการเขียนระเบียนสถิติลงในไฟล์บันทึก API
- rotate_interval: (ค่าเริ่มต้น: 24) ช่วงเวลาเป็นชั่วโมงเมื่อหมุนไฟล์บันทึก เช่น
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
แนวทางในการบำรุงรักษาไฟล์บันทึกที่ดี
เมื่อข้อมูลไฟล์บันทึกสะสมไปเรื่อยๆ Apigee จึงขอแนะนำให้ทำตามแนวทางปฏิบัติต่อไปนี้
- เนื่องจากไฟล์บันทึกอาจมีขนาดค่อนข้างใหญ่ โปรดตรวจสอบว่าไดเรกทอรีของไฟล์บันทึกนั้นมีพื้นที่ว่างเพียงพอ โปรดดูหัวข้อตำแหน่งจัดเก็บไฟล์บันทึกและวิธีเปลี่ยนไดเรกทอรีไฟล์บันทึกเริ่มต้น
- ลบหรือย้ายไฟล์บันทึกไปยังไดเรกทอรีที่เก็บถาวรแยกต่างหากอย่างน้อยสัปดาห์ละครั้ง
- หากนโยบายคือการลบบันทึก คุณจะใช้คำสั่ง CLI
edgemicro log -c
เพื่อนำบันทึกเก่าออก (ล้าง) ได้
แบบแผนการตั้งชื่อไฟล์บันทึก
อินสแตนซ์ Edge Microgateway แต่ละรายการจะสร้างไฟล์บันทึก 3 ประเภทดังนี้
- api - บันทึกคำขอและการตอบกลับทั้งหมดที่เข้าสู่ Edge Microgateway ระบบจะบันทึกตัวนับ API (สถิติ) และข้อผิดพลาดลงในไฟล์นี้ด้วย
- err - บันทึกทุกอย่างที่ส่งไปยัง stderr
- out - บันทึกทุกอย่างที่ส่งไปยัง stdout
รูปแบบการตั้งชื่อมีดังนี้
edgemicro-<Host Name>-<Instance ID>-<Log Type>.log
เช่น
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log
เกี่ยวกับเนื้อหาในไฟล์บันทึก
เพิ่มแล้วใน v2.3.3
โดยค่าเริ่มต้น บริการบันทึกจะยกเว้น JSON ของพร็อกซี ผลิตภัณฑ์ และ JSON Web Token (JWT) ที่ดาวน์โหลดมา หากต้องการส่งออกออบเจ็กต์เหล่านี้ไปยังไฟล์บันทึก ให้ตั้งค่า DEBUG=*
เมื่อเริ่ม Edge Microgateway เช่น
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
เนื้อหาของไฟล์บันทึก "api"
ไฟล์บันทึก "api" มีข้อมูลโดยละเอียดเกี่ยวกับโฟลว์คำขอและการตอบกลับผ่าน Edge Microgateway โดยไฟล์บันทึก "api" จะมีชื่อดังนี้
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
สำหรับแต่ละคำขอที่ส่งไปยัง Edge Microgateway เหตุการณ์ 4 รายการจะได้รับการบันทึกไว้ในไฟล์บันทึก "api" ดังนี้
- คำขอขาเข้าจากไคลเอ็นต์
- ส่งคำขอขาออกไปยังเป้าหมายแล้ว
- การตอบสนองขาเข้าจากเป้าหมาย
- การตอบกลับไคลเอ็นต์ขาออก
แต่ละรายการที่แยกกันเหล่านี้จะแสดงเป็นสัญลักษณ์แบบย่อเพื่อช่วยให้ไฟล์บันทึกมีขนาดกะทัดรัดมากขึ้น ต่อไปนี้เป็นตัวอย่าง 4 รายการที่แสดงถึงแต่ละเหตุการณ์จาก 4 เหตุการณ์ ในไฟล์บันทึก ข้อมูลจะมีลักษณะดังนี้ (หมายเลขบรรทัดจะใช้สำหรับอ้างอิงในเอกสารเท่านั้น และไม่ปรากฏในไฟล์บันทึก)
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
ลองมาดูทีละรายการกัน
1. ตัวอย่างคำขอขาเข้าจากลูกค้า:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 - การประทับวันที่ Unix
- info - ขึ้นอยู่กับบริบท ซึ่งอาจเป็นข้อมูล คำเตือน หรือข้อผิดพลาด โดยขึ้นอยู่กับระดับของบันทึก ซึ่งอาจเป็นสถิติของระเบียนสถิติ คำเตือนเมื่อได้รับคำเตือน หรือข้อผิดพลาด
- req - ระบุเหตุการณ์ ในกรณีนี้ ให้ส่งคำขอจากไคลเอ็นต์
- m - กริยา HTTP ที่ใช้ในคำขอ
- u - ส่วนของ URL ที่ตามหลัง Basepath
- h - หมายเลขโฮสต์และพอร์ตที่ Edge Microgateway กำลังฟังอยู่
- r - โฮสต์และพอร์ตระยะไกลที่เกิดคำขอของไคลเอ็นต์
- i - รหัสคำขอ ทั้ง 4 รายการจะใช้รหัสนี้ร่วมกัน ระบบจะกำหนดรหัสคำขอที่ไม่ซ้ำกันให้กับคำขอแต่ละรายการ บันทึกความสัมพันธ์กันตามรหัสคำขอสามารถให้ข้อมูลเชิงลึกที่เป็นประโยชน์เกี่ยวกับเวลาในการตอบสนองของเป้าหมาย
- d - ระยะเวลาเป็นมิลลิวินาทีนับจากที่ Edge Microgateway ได้รับคำขอ ในตัวอย่างข้างต้น เป้าหมายการตอบสนองสำหรับคำขอ 0 ได้รับหลังผ่านไป 7 มิลลิวินาที (บรรทัดที่ 3) และระบบส่งการตอบกลับไปยังไคลเอ็นต์หลังผ่านไปอีก 4 มิลลิวินาที (บรรทัดที่ 4) กล่าวคือ เวลาในการตอบสนองคำขอรวมคือ 11 มิลลิวินาที โดยเป้าหมายใช้ไปแล้ว 7 มิลลิวินาที และ Edge Microgateway เองก็อยู่ที่ 4 มิลลิวินาที
2. ตัวอย่างคําขอขาออกที่ส่งไปยังเป้าหมาย
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 - การประทับวันที่ Unix
- info - ขึ้นอยู่กับบริบท ซึ่งอาจเป็นข้อมูล คำเตือน หรือข้อผิดพลาด โดยขึ้นอยู่กับระดับของบันทึก ซึ่งอาจเป็นสถิติของระเบียนสถิติ คำเตือนเมื่อได้รับคำเตือน หรือข้อผิดพลาด
- treq - ระบุเหตุการณ์ ซึ่งในกรณีนี้คือคำขอเป้าหมาย
- m - กริยา HTTP ที่ใช้ในคำขอเป้าหมาย
- u - ส่วนของ URL ที่ตามหลัง Basepath
- h - โฮสต์และหมายเลขพอร์ตของเป้าหมายแบ็กเอนด์
- i - รหัสของรายการบันทึก ทั้ง 4 รายการกิจกรรมจะแชร์รหัสนี้
3. ตัวอย่างการตอบกลับขาเข้าจากเป้าหมาย
1436403888672 info tres s=200, d=7, i=0
1436403888651 - การประทับวันที่ Unix
- info - ขึ้นอยู่กับบริบท ซึ่งอาจเป็นข้อมูล คำเตือน หรือข้อผิดพลาด โดยขึ้นอยู่กับระดับของบันทึก ซึ่งอาจเป็นสถิติของระเบียนสถิติ คำเตือนเมื่อได้รับคำเตือน หรือข้อผิดพลาด
- tres - ระบุเหตุการณ์ ในกรณีนี้คือการตอบสนองเป้าหมาย
- s - สถานะการตอบสนอง HTTP
- d - ระยะเวลาเป็นมิลลิวินาที เวลาที่เป้าหมายใช้สำหรับการเรียก API
- i - รหัสของรายการบันทึก ทั้ง 4 รายการกิจกรรมจะแชร์รหัสนี้
4. ตัวอย่างข้อความตอบกลับไคลเอ็นต์
1436403888676 info res s=200, d=11, i=0
1436403888651 - การประทับวันที่ Unix
- info - ขึ้นอยู่กับบริบท ซึ่งอาจเป็นข้อมูล คำเตือน หรือข้อผิดพลาด โดยขึ้นอยู่กับระดับของบันทึก ซึ่งอาจเป็นสถิติของระเบียนสถิติ คำเตือนเมื่อได้รับคำเตือน หรือข้อผิดพลาด
- res - ระบุเหตุการณ์ ในกรณีนี้ ให้ตอบกลับไคลเอ็นต์
- s - สถานะการตอบสนอง HTTP
- d - ระยะเวลาเป็นมิลลิวินาที เวลานี้คือเวลารวมที่ใช้ในการเรียก API รวมถึงเวลาที่ API เป้าหมายใช้และเวลาที่ Edge Microgateway เองใช้
- i - รหัสของรายการบันทึก ทั้ง 4 รายการกิจกรรมจะแชร์รหัสนี้
กำหนดการของไฟล์บันทึก
ระบบจะหมุนเวียนไฟล์บันทึกในช่วงเวลาที่ระบุโดย rotate_interval แอตทริบิวต์การกำหนดค่า ระบบจะยังเพิ่มรายการไปยังไฟล์บันทึกเดียวกันต่อไปจนกว่าช่วงเวลาการหมุนเวียนจะสิ้นสุดลง แต่ทุกครั้งที่รีสตาร์ท Edge Microgateway อุปกรณ์จะได้รับ UID ใหม่และสร้างไฟล์บันทึกชุดใหม่ที่มี UID นี้ และโปรดดูแนวทางปฏิบัติในการบำรุงรักษาไฟล์บันทึกที่ดี
ข้อความแสดงข้อผิดพลาด
รายการบันทึกบางรายการอาจมีข้อความแสดงข้อผิดพลาด โปรดดูข้อมูลอ้างอิงข้อผิดพลาดของ Edge Microgateway เพื่อช่วยระบุตำแหน่งและสาเหตุที่เกิดข้อผิดพลาด
ข้อมูลอ้างอิงการกำหนดค่า Edge Microgateway
ตำแหน่งของไฟล์การกำหนดค่า
แอตทริบิวต์การกำหนดค่าที่อธิบายในส่วนนี้จะอยู่ในไฟล์การกำหนดค่า Edge Microgateway ดูเพิ่มเติมที่การเปลี่ยนแปลงการกำหนดค่า
แอตทริบิวต์ edge_config
การตั้งค่าเหล่านี้ใช้เพื่อกำหนดค่าการโต้ตอบระหว่างอินสแตนซ์ Edge Microgateway และ Apigee Edge
- Bootstrap: (ค่าเริ่มต้น: ไม่มี) URL ที่ชี้ไปยังบริการ Edge Microgateway โดยเฉพาะที่ทำงานบน Apigee Edge Edge Microgateway ใช้บริการนี้เพื่อสื่อสารกับ Apigee Edge โดยจะแสดง URL นี้เมื่อคุณเรียกใช้คำสั่งเพื่อสร้างคู่คีย์สาธารณะ/ส่วนตัว:
edgemicro genkeys
โปรดดูรายละเอียดที่การตั้งค่าและการกำหนดค่า Edge Microgateway - jwt_public_key: (ค่าเริ่มต้น: ไม่มี) URL ที่ชี้ไปยังพร็อกซี Edge Microgateway ที่ทำให้ใช้งานได้ใน Apigee Edge พร็อกซีนี้ทำหน้าที่เป็นปลายทางการตรวจสอบสิทธิ์สำหรับการออกโทเค็นเพื่อการเข้าถึงที่ลงนามไปยังไคลเอ็นต์ โดย URL นี้จะส่งคืนเมื่อคุณเรียกใช้คำสั่งเพื่อทำให้พร็อกซีใช้งานได้: edgemicroconfigure โปรดดูรายละเอียดที่การตั้งค่าและการกำหนดค่า Edge Microgateway
แอตทริบิวต์ edgemicro
การตั้งค่าเหล่านี้จะกําหนดกระบวนการ Edge Microgateway
- port: (ค่าเริ่มต้น: 8000) หมายเลขพอร์ตที่กระบวนการ Edge Microgateway รอฟัง
- max_connections: (ค่าเริ่มต้น: -1) ระบุจำนวนการเชื่อมต่อขาเข้าพร้อมกันสูงสุดที่ Edge Microgateway รับได้ หากเกินจำนวนนี้ ระบบจะแสดงผลสถานะต่อไปนี้
res.statusCode = 429; // Too many requests
- max_connections_hard: (ค่าเริ่มต้น: -1) จำนวนคำขอหลายรายการพร้อมกันที่ Edge Microgateway รับได้ก่อนปิดการเชื่อมต่อ การตั้งค่านี้มีไว้สำหรับขัดขวางการโจมตีแบบปฏิเสธการให้บริการ โดยปกติแล้ว ให้ตั้งค่าเป็นจำนวนที่มากกว่า max_connects
-
การบันทึก:
-
level: (ค่าเริ่มต้น: ข้อผิดพลาด)
- info - บันทึกคำขอและการตอบกลับทั้งหมดที่ไหลผ่านอินสแตนซ์ Edge Microgateway
- warn - บันทึกข้อความเตือนเท่านั้น
- error - บันทึกข้อความแสดงข้อผิดพลาดเท่านั้น
- dir: (ค่าเริ่มต้น: /var/tmp) ไดเรกทอรีที่เก็บไฟล์บันทึก
- stats_log_interval: (ค่าเริ่มต้น: 60) ช่วงเวลาในหน่วยวินาทีที่มีการเขียนระเบียนสถิติลงในไฟล์บันทึก API
- rotate_interval: (ค่าเริ่มต้น: 24) ช่วงเวลาเป็นชั่วโมงเมื่อหมุนไฟล์บันทึก
-
level: (ค่าเริ่มต้น: ข้อผิดพลาด)
- ปลั๊กอิน: ปลั๊กอินจะเพิ่มฟังก์ชันการทำงานให้กับ Edge Microgateway โปรดดูรายละเอียดเกี่ยวกับการพัฒนาปลั๊กอินที่หัวข้อพัฒนาปลั๊กอินที่กำหนดเอง
- dir: เส้นทางแบบสัมพัทธ์จากไดเรกทอรี ./gateway ไปยังไดเรกทอรี ./plugins หรือเส้นทางแบบสัมบูรณ์
- sequence: รายการโมดูลปลั๊กอินที่จะเพิ่มในอินสแตนซ์ Edge Microgateway โมดูลจะทำงานตามลำดับที่ระบุไว้ที่นี่
-
debug: เพิ่มการแก้ไขข้อบกพร่องจากระยะไกลในกระบวนการ Edge Microgateway
- port: หมายเลขพอร์ตที่จะฟัง ตัวอย่างเช่น ตั้งค่าโปรแกรมแก้ไขข้อบกพร่อง IDE ให้รับคำสั่งบนพอร์ตนี้
- args: อาร์กิวเมนต์ของกระบวนการแก้ไขข้อบกพร่อง เช่น
args --nolazy
- config_change_poll_interval: (ค่าเริ่มต้น: 600 วินาที) Edge Microgateway
จะโหลดการกำหนดค่าใหม่เป็นระยะๆ และดำเนินการโหลดซ้ำหากมีการเปลี่ยนแปลง แบบสำรวจจะดึงข้อมูลการเปลี่ยนแปลงที่ทำบน Edge (การเปลี่ยนแปลงผลิตภัณฑ์, พร็อกซี microgateway-aware เป็นต้น) รวมถึงการเปลี่ยนแปลงไฟล์การกำหนดค่าในเครื่อง
- disable_config_poll_interval: (ค่าเริ่มต้น: เท็จ) ตั้งค่าเป็น true เป็นปิดแบบสำรวจการเปลี่ยนแปลงอัตโนมัติ
- request_timeout: ตั้งค่าระยะหมดเวลาสำหรับคำขอเป้าหมาย ระบบจะตั้งค่าระยะหมดเวลาเป็นวินาที หากหมดเวลา Edge Microgateway จะตอบสนองด้วยรหัสสถานะ 504 (เพิ่ม v2.4.x แล้ว)
แอตทริบิวต์ส่วนหัว
การตั้งค่าเหล่านี้จะกำหนดวิธีจัดการส่วนหัว HTTP บางรายการ
- x-forwarded-for: (ค่าเริ่มต้น: true) ตั้งค่าเป็น "เท็จ" เพื่อป้องกันไม่ให้มีการส่งส่วนหัว x-forwarded-for ไปยังเป้าหมาย โปรดทราบว่าหากส่วนหัว x-forwarded-for อยู่ในคำขอ ระบบจะกำหนดค่าของส่วนหัวเป็นค่า client-ip ใน Edge Analytics
- x-forwarded-host: (ค่าเริ่มต้น: true) ตั้งค่าเป็น "เท็จ" เพื่อป้องกันไม่ให้มีการส่งส่วนหัว x-forwarded-host ไปยังเป้าหมาย
- x-request-id: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้มีการส่งส่วนหัว x-request-id ไปยังเป้าหมาย
- x-Response-time: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้มีการส่งส่วนหัว x-response-time ไปยังเป้าหมาย
- via: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้มีการส่งผ่านส่วนหัวไปยังเป้าหมาย
แอตทริบิวต์ oauth
การตั้งค่าเหล่านี้จะกำหนดค่าวิธีบังคับใช้การตรวจสอบสิทธิ์ไคลเอ็นต์โดย Edge Microgateway
- allowNoAuthorization: (ค่าเริ่มต้น: เท็จ) หากตั้งค่าเป็น "จริง" ระบบจะอนุญาตให้การเรียก API ผ่าน Edge Microgateway ได้โดยไม่ต้องมีส่วนหัวการให้สิทธิ์เลย ตั้งค่าเป็น "เท็จ" เพื่อกำหนดให้มีส่วนหัวการให้สิทธิ์ (ค่าเริ่มต้น)
- allowInvalidAuthorization: (ค่าเริ่มต้น: เท็จ) หากตั้งค่าเป็น "จริง" การเรียก API จะได้รับอนุญาตให้ส่งหากโทเค็นที่ส่งผ่านในส่วนหัวการให้สิทธิ์ไม่ถูกต้องหรือหมดอายุ ตั้งค่าเป็น "เท็จ" เพื่อกำหนดให้ใช้โทเค็นที่ถูกต้อง (ค่าเริ่มต้น)
- permissions-header: (ค่าเริ่มต้น: Authorization: Bearer) ส่วนหัวที่ใช้ส่งโทเค็นเพื่อการเข้าถึงไปยัง Edge Microgateway คุณอาจต้องการเปลี่ยนค่าเริ่มต้นในกรณีที่เป้าหมายจำเป็นต้องใช้ส่วนหัวการให้สิทธิ์เพื่อวัตถุประสงค์อื่น
- api-key-header: (ค่าเริ่มต้น: x-api-key) ชื่อของส่วนหัวหรือพารามิเตอร์การค้นหาที่ใช้ส่งคีย์ API ไปยัง Edge Microgateway ดูข้อมูลเพิ่มเติมที่หัวข้อการใช้คีย์ API
- keep-authorized-header: (ค่าเริ่มต้น: เท็จ) หากตั้งค่าเป็น "จริง" ส่วนหัวการให้สิทธิ์ที่ส่งในคำขอจะส่งไปยังเป้าหมาย (จะยังคงอยู่)
- allowOAuthOnly - หากตั้งค่าเป็น "จริง" API ทุกรายการต้องมีส่วนหัวการให้สิทธิ์ที่มีโทเค็นเพื่อการเข้าถึงสำหรับผู้ถือ อนุญาตให้คุณอนุญาตเฉพาะโมเดลความปลอดภัยของ OAuth (โดยยังคงความเข้ากันได้แบบย้อนหลัง) (เพิ่ม 2.4.x)
- allowAPIKeyOnly -- หากตั้งค่าเป็น "จริง" API ทุกรายการต้องมีส่วนหัว x-api-key (หรือตำแหน่งที่กำหนดเอง) พร้อมคีย์ API อนุญาตให้คุณอนุญาตเฉพาะโมเดลความปลอดภัยคีย์ API เท่านั้น (ขณะเดียวกันก็ยังคงรักษาความเข้ากันได้แบบย้อนหลัง) (เพิ่มเวอร์ชัน 2.4.x)
- gracePeriod -- พารามิเตอร์นี้ช่วยป้องกันข้อผิดพลาดที่เกิดจากความคลาดเคลื่อนเล็กน้อยระหว่างนาฬิการะบบของคุณกับ "ไม่ก่อน (nbf)" หรือ "เวลาที่ออก" (IAt) ที่ระบุไว้ในโทเค็นการให้สิทธิ์ของ JWT ตั้งค่าพารามิเตอร์นี้เป็นจำนวนวินาทีเพื่อให้เกิดความคลาดเคลื่อนดังกล่าว (เพิ่มใน 2.5.7)
แอตทริบิวต์เฉพาะปลั๊กอิน
ดู การใช้ปลั๊กอิน สำหรับรายละเอียดเกี่ยวกับแอตทริบิวต์ที่กำหนดค่าได้สำหรับแต่ละปลั๊กอิน
การกรองพร็อกซี
คุณกรองพร็อกซีที่รับรู้ Microgateway ที่อินสแตนซ์ Edge Microgateway จะประมวลผลได้
เมื่อ Edge Microgateway เริ่มทำงาน ระบบจะดาวน์โหลดพร็อกซี Microgateway-Aware ทั้งหมดในองค์กรที่เชื่อมโยงไว้ ใช้การกำหนดค่าต่อไปนี้เพื่อจำกัดพร็อกซีที่ไมโครเกตเวย์จะประมวลผล ตัวอย่างเช่น การกำหนดค่านี้จำกัดพร็อกซีที่ไมโครเกตเวย์จะประมวลผลเป็น 3 ประเภทดังนี้ edgemicro_proxy-1
, edgemicro_proxy-2
และ edgemicro_proxy-3
proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
การกําหนดค่าความถี่ในการพุช Analytics
ใช้พารามิเตอร์การกำหนดค่าเหล่านี้เพื่อควบคุมความถี่ที่ Edge Microgateway ส่งข้อมูลวิเคราะห์ไปยัง Apigee
- bufferSize (ไม่บังคับ): จำนวนบันทึก Analytics สูงสุดที่บัฟเฟอร์เก็บได้ก่อนเริ่มทิ้งระเบียนที่เก่าที่สุด ค่าเริ่มต้น: 10,000
- batchSize (ไม่บังคับ): ขนาดสูงสุดของกลุ่มระเบียนข้อมูลวิเคราะห์ที่ส่งไปยัง Apigee ค่าเริ่มต้น: 500
- flushInterval (ไม่บังคับ): จำนวนมิลลิวินาทีระหว่างการล้างข้อมูลแต่ละครั้งของระเบียน Analytics ที่ส่งไปยัง Apigee ค่าเริ่มต้น: 5,000
เช่น
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
การมาสก์ข้อมูลวิเคราะห์
การกำหนดค่าต่อไปนี้ป้องกันไม่ให้ข้อมูลเส้นทางคำขอแสดงในข้อมูลวิเคราะห์ Edge เพิ่มข้อมูลต่อไปนี้ลงในการกำหนดค่า Microgateway เพื่อมาสก์ URI คำขอและ/หรือเส้นทางคำขอ โปรดทราบว่า URI ประกอบด้วยชื่อโฮสต์และเส้นทางของคำขอ
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
การแยกการเรียก API ใน Edge Analytics
คุณกำหนดค่าปลั๊กอิน Analytics ให้แยกเส้นทาง API ที่ต้องการเพื่อให้ปรากฏเป็นพร็อกซีแยกต่างหากในหน้าแดชบอร์ด Edge Analytics ได้ ตัวอย่างเช่น คุณอาจแยก API การตรวจสอบประสิทธิภาพการทำงานในหน้าแดชบอร์ดเพื่อหลีกเลี่ยงความสับสนกับการเรียกพร็อกซี API จริง ในแดชบอร์ด Analytics พร็อกซีแยกจะมีรูปแบบการตั้งชื่อตามนี้
edgemicro_proxyname-health
รูปภาพต่อไปนี้แสดงพร็อกซีแยก 2 รายการในหน้าแดชบอร์ด Analytics: edgemicro_hello-health
และ edgemicro_mock-health
ใช้พารามิเตอร์เหล่านี้เพื่อแยกเส้นทางที่เกี่ยวข้องและเส้นทางสัมบูรณ์ในหน้าแดชบอร์ด Analytics เป็นพร็อกซีแยกต่างหาก
- relativePath (ไม่บังคับ): ระบุเส้นทางสัมพัทธ์เพื่อแยกในแดชบอร์ด Analytics เช่น หากคุณระบุ
/healthcheck
การเรียก API ทั้งหมดที่มีเส้นทาง/healthcheck
จะปรากฏในหน้าแดชบอร์ดเป็นedgemicro_proxyname-health
โปรดทราบว่าแฟล็กนี้จะไม่สนใจเส้นทางฐานของพร็อกซี หากต้องการแยกตามเส้นทางแบบเต็ม รวมถึงเส้นทางฐาน ให้ใช้แฟล็กproxyPath
- proxyPath (ไม่บังคับ): ระบุเส้นทางพร็อกซี API แบบเต็ม รวมถึงเส้นทางพื้นฐานของพร็อกซีเพื่อแยกในหน้าแดชบอร์ด Analytics ตัวอย่างเช่น หากคุณระบุ
/mocktarget/healthcheck
โดยที่/mocktarget
คือเส้นทางพื้นฐานของพร็อกซี การเรียก API ทั้งหมดที่มีเส้นทาง/mocktarget/healthcheck
จะปรากฏในหน้าแดชบอร์ดเป็นedgemicro_proxyname-health
เช่น ในการกำหนดค่าต่อไปนี้ ปลั๊กอิน Analytics จะแยกเส้นทาง API ที่มี /healthcheck
ออก ซึ่งหมายความว่า /foo/healthcheck
และ /foo/bar/healthcheck
จะถูกแยกเป็นพร็อกซีแยกต่างหากชื่อ edgemicro_proxyname-health
ในแดชบอร์ด Analytics
analytics: uri: >- https://xx/edgemicro/ax/org/docs/environment/test bufferSize: 100 batchSize: 50 flushInterval: 500 relativePath: /healthcheck
ในการกำหนดค่าต่อไปนี้ ระบบจะแยก API ที่มีเส้นทางพร็อกซี /mocktarget/healthcheck
เป็นพร็อกซีแยกต่างหากที่ชื่อว่า edgemicro_proxyname-health
ในหน้าแดชบอร์ดข้อมูลวิเคราะห์
analytics: uri: >- https://xx/edgemicro/ax/org/docs/environment/test bufferSize: 100 batchSize: 50 flushInterval: 500 proxyPath: /mocktarget/healthcheck
การตั้งค่า Edge Microgateway เบื้องหลังไฟร์วอลล์ของบริษัท
รองรับ v2.4.x
หากติดตั้ง Edge Microgateway ไว้หลังไฟร์วอลล์ เกตเวย์อาจไม่สามารถสื่อสารกับ Apigee Edge ได้ ในกรณีนี้ มี 2 ตัวเลือกที่คุณสามารถพิจารณา ได้แก่
ตัวเลือก 1
ตัวเลือกที่ 1 คือตั้งค่าตัวเลือก edgemicro: proxy_tunnel ให้เป็นจริงในไฟล์การกำหนดค่า microgateway ดังนี้
edge_config: proxy: http://10.224.16.85:3128 proxy_tunnel: true
เมื่อ proxy_tunnel เป็น true แล้ว Edge Microgateway จะใช้เมธอด HTTP CONNECT เพื่ออุโมงค์ข้อมูลคำขอ HTTP ผ่านการเชื่อมต่อ TCP เดียว (เช่นเคยหากตัวแปรสภาพแวดล้อมสำหรับการกำหนดค่าพร็อกซีเปิดใช้ TLS อยู่)
ตัวเลือก 2
ตัวเลือกที่ 2 คือการระบุพร็อกซีและตั้งค่าพร็อกซี_tunnel เป็น "เท็จ" ในไฟล์การกำหนดค่า microgateway เช่น
edge_config: proxy: http://10.224.16.85:3128 proxy_tunnel: false
ในกรณีนี้ คุณตั้งค่าตัวแปรต่อไปนี้เพื่อควบคุมโฮสต์ของพร็อกซี HTTP แต่ละรายการที่ต้องการใช้ หรือโฮสต์ที่ไม่ควรจัดการพร็อกซี Edge Microgateway ได้: HTTP_PROXY, HTTPS_PROXY และ NO_PROXY
คุณตั้งค่า NO_PROXY เป็นรายการโดเมนที่คั่นด้วยคอมมาซึ่ง Edge Microgateway ไม่ควรทำหน้าที่เป็นพร็อกซีให้ เช่น
export NO_PROXY='localhost,localhost:8080'
ตั้งค่า HTTP_PROXY และ HTTPS_PROXY เป็น Edge Microgateway สำหรับปลายทางของพร็อกซี HTTP จะส่งข้อความไปได้ เช่น
export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786'
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรเหล่านี้ได้ที่ https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables
ดูเพิ่มเติม
วิธีตั้งค่า Edge Microgateway หลังไฟร์วอลล์ของบริษัทในชุมชน Apigee
การใช้ไวลด์การ์ดในพร็อกซีที่รับรู้ถึง Microgateway
คุณใช้ไวลด์การ์ด "*" ได้อย่างน้อย 1 รายการในเส้นทางฐานของพร็อกซี edgemicro_* (Microgateway-aware) เช่น เส้นทางฐานของ /team/*/members จะช่วยให้ไคลเอ็นต์เรียกใช้ https://[host]/team/blue/members และ https://[host]/team/green/members ได้โดยไม่ต้องสร้างพร็อกซี API ใหม่เพื่อสนับสนุนทีมใหม่ โปรดทราบว่าไม่รองรับ /**/
สำคัญ: Apigee ไม่รองรับการใช้ไวลด์การ์ด "*" เป็นองค์ประกอบแรกของเส้นทางฐาน เช่น ระบบไม่รองรับการค้นหาแบบ /*/
การหมุนเวียนคีย์ JWT
หลังจากที่สร้าง JWT ครั้งแรกแล้ว คุณอาจต้องเปลี่ยนคู่คีย์สาธารณะ/ส่วนตัวที่จัดเก็บไว้ใน KVM ที่เข้ารหัส Edge กระบวนการสร้างคู่คีย์ใหม่เรียกว่าการหมุนเวียนคีย์
Edge Microgateway ใช้ JWT อย่างไร
JSON Web Token (JWT) เป็นมาตรฐานโทเค็นที่อธิบายไว้ใน RFC7519 JWT มอบวิธีลงนามชุดการอ้างสิทธิ์ ซึ่งผู้รับของ JWT สามารถยืนยันได้อย่างน่าเชื่อถือ
Edge Microgateway ใช้ JWT เป็นโทเค็นสำหรับผู้ถือเพื่อความปลอดภัยของ OAuth เมื่อสร้างโทเค็น OAuth สำหรับ Edge Microgateway คุณจะได้รับ JWT กลับคืนมา จากนั้นคุณจะใช้ JWT ในส่วนหัวการให้สิทธิ์ของการเรียก API ได้ เช่น
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
กำลังสร้าง JWT ใหม่
คุณสร้าง JWT สำหรับ Edge Microgateway ได้โดยใช้คำสั่ง edgemicro token
หรือ API เช่น
edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
คำสั่งนี้จะขอให้ Apigee Edge สร้าง JWT ที่จะใช้ยืนยันการเรียก API ได้ พารามิเตอร์ -i
และ -s
คือรหัสผู้บริโภคและค่าข้อมูลลับจากแอปของนักพัฒนาซอฟต์แวร์ในองค์กร Apigee Edge
หรือจะสร้าง JWT โดยใช้ API การจัดการก็ได้เช่นกัน
curl -i -X POST "http://org-env.apigee.net/edgemicro-auth/token" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your consumer key", "client_secret": "your consumer secret", "grant_type": "client_credentials" }'
โดยที่
- org คือชื่อองค์กร Edge ของคุณ (คุณต้องเป็นผู้ดูแลระบบองค์กร)
- env คือสภาพแวดล้อมในองค์กร (เช่น "test" หรือ "prod")
- client_id คือรหัสผู้บริโภคในแอปนักพัฒนาซอฟต์แวร์ที่คุณสร้างก่อนหน้านี้
- client_secret คือข้อมูลลับของผู้บริโภคในแอปนักพัฒนาซอฟต์แวร์ที่คุณสร้าง ไว้ก่อนหน้านี้
การหมุนเวียนคีย์คืออะไร
หลังจากที่สร้าง JWT ครั้งแรกแล้ว คุณอาจต้องเปลี่ยนคู่คีย์สาธารณะ/ส่วนตัวที่จัดเก็บไว้ใน KVM ที่เข้ารหัส Edge กระบวนการสร้างคู่คีย์ใหม่เรียกว่าการหมุนเวียนคีย์ เมื่อคุณหมุนเวียนคีย์ ระบบจะสร้างคู่คีย์ส่วนตัว/สาธารณะใหม่และจัดเก็บใน KVM "microgateway" ในองค์กร/สภาพแวดล้อม Apigee Edge นอกจากนี้ ระบบจะเก็บคีย์สาธารณะเก่าไว้พร้อมกับค่ารหัสคีย์เดิม
Edge จะใช้ข้อมูลที่จัดเก็บไว้ใน KVM ที่เข้ารหัสเพื่อสร้าง JWT ระบบได้สร้าง KVM ที่เรียกว่า microgateway
และป้อนข้อมูลด้วยคีย์เมื่อคุณตั้งค่า (กำหนดค่า) Edge Microgateway เป็นครั้งแรก คีย์ใน KVM ใช้เพื่อลงนามและเข้ารหัส JWT
คีย์ KVM ได้แก่
-
private_key - คีย์ส่วนตัว RSA ล่าสุด (ที่สร้างล่าสุด) ที่ใช้ในการลงนาม JWT
-
public_key - ใบรับรองล่าสุด (ที่สร้างล่าสุด) ที่ใช้เพื่อยืนยัน JWT ที่ลงชื่อด้วย Private_key
-
private_key_kid - รหัสคีย์ส่วนตัวล่าสุด (สร้างล่าสุด) รหัสคีย์นี้เชื่อมโยงกับค่า Private_key และใช้เพื่อรองรับการหมุนเวียนคีย์
-
public_key1_kid - รหัสคีย์สาธารณะล่าสุด (สร้างล่าสุด) คีย์นี้เชื่อมโยงกับค่า Public_key1 และใช้เพื่อรองรับการหมุนเวียนคีย์ ค่านี้เหมือนกับค่าส่วนตัวของคีย์ส่วนตัว
-
public_key1 - คีย์สาธารณะล่าสุด (สร้างล่าสุด)
เมื่อคุณหมุนเวียนคีย์ ระบบจะแทนที่ค่าคีย์ที่มีอยู่ในแมปและเพิ่มคีย์ใหม่เพื่อเก็บคีย์สาธารณะเดิม เช่น
-
public_key2_kid - รหัสคีย์สาธารณะเดิม คีย์นี้เชื่อมโยงกับค่า Public_key2 และใช้เพื่อรองรับการหมุนเวียนคีย์
-
public_key2 - คีย์สาธารณะเดิม
JWT ที่ถูกนำเสนอเพื่อการยืนยันจะได้รับการยืนยันโดยใช้คีย์สาธารณะใหม่ หากยืนยันไม่สำเร็จ ระบบจะใช้คีย์สาธารณะเดิมจนกว่าจะหมดอายุ (หลังจาก 30 นาที) วิธีนี้ช่วยให้คุณ "หมุนเวียน" คีย์โดยไม่ขัดจังหวะการรับส่งข้อมูลของ API ได้ทันที
วิธีการหมุนเวียนคีย์
ส่วนนี้จะอธิบายวิธีการหมุนเวียนคีย์
หากคุณกําหนดค่าอินสแตนซ์ Edge Microgateway ก่อนเวอร์ชัน 2.5.2
หากกำหนดค่าอินสแตนซ์ Edge Microgateway ก่อนเวอร์ชัน 2.5.2 คุณต้องเรียกใช้คำสั่ง 2 ข้อต่อไปนี้เพื่ออัปเกรด KVM และนโยบายการตรวจสอบสิทธิ์
upgradekvm -o org -e env -u username
ดูข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งนี้ได้ที่การอัปเกรด KVM
คำสั่งถัดไปจะอัปเกรดพร็อกซี edgemicro-oauth ที่ทำให้ใช้งานได้กับองค์กร Apigee เมื่อคุณกำหนดค่า Edge Microgateway พร็อกซีนี้ให้บริการที่จำเป็น ในการสร้างโทเค็น
upgradeauth -o org -e env -u username
ดูข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งนี้ได้ที่การอัปเกรดพร็อกซี edgemicro-auth
การหมุนแป้น
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ ~/.edgemicro/org-env-config.yaml
ซึ่งคุณจะต้องระบุองค์กรและสภาพแวดล้อมเดียวกันกับที่คุณกำหนดค่า Microgateway ไว้ดังนี้
jwk_public_keys: 'https://org-env.apigee.net/edgemicro-auth/jwkPublicKeys'
เรียกใช้คำสั่งการหมุนเวียนคีย์เพื่อหมุนเวียนคีย์ (ดูข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งนี้ได้ที่การหมุนเวียนคีย์)
edgemicro rotatekey -o org -e env -u username -k kid_value
เช่น
edgemicro rotatekey -o jdoe -e test -u jdoe@google.com -k 2 current nodejs version is v6.9.1 current edgemicro version is 2.5.7 password: Checking if private key exists in the KVM... Checking for certificate... Found Certificate Generating New key/cert pair... Extract new public key Key Rotation successfully completed!
พารามิเตอร์ -k
ระบุรหัสคีย์ (kid) รหัสนี้ใช้เพื่อจับคู่คีย์ที่เจาะจง
Edge Microgateway จะใช้ค่านี้เพื่อเลือกชุดของคีย์ในระหว่างการหมุนเวียนคีย์ ดูข้อมูลเพิ่มเติมได้ที่ส่วนที่ 4.5 ของข้อกำหนดเว็บคีย์ JSON
หลังการหมุนคีย์ Edge จะส่งคีย์หลายคีย์กลับไปที่ Edge Microgateway โปรดทราบว่าในตัวอย่างต่อไปนี้ แต่ละคีย์จะมีค่า "kid" (รหัสคีย์) ที่ไม่ซ้ำกัน จากนั้น Microgateway จะใช้คีย์เหล่านี้เพื่อตรวจสอบโทเค็นการให้สิทธิ์ หากตรวจสอบโทเค็นไม่สำเร็จ Microgateway จะมองหาคีย์ที่เก่ากว่าในชุดคีย์และลองใช้คีย์นั้น รูปแบบของคีย์ที่แสดงผลคือ JSON Web Key (JWK) คุณสามารถอ่านข้อมูลเกี่ยวกับรูปแบบนี้ได้ใน RFC 7517
{ "keys": [ { "kty": "RSA", "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ", "e": "AQAB", "kid": "2" }, { "kty": "RSA", "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw", "e": "AQAB", "kid": "1" } ] }
การกรองพร็อกซีที่ดาวน์โหลด
โดยค่าเริ่มต้น Edge Microgateway จะดาวน์โหลดพร็อกซีทั้งหมดในองค์กร Edge ของคุณที่ขึ้นต้นด้วยคำนำหน้าชื่อ "edgemicro_" คุณสามารถเปลี่ยนค่าเริ่มต้นนี้เพื่อดาวน์โหลดพร็อกซีที่มีชื่อตรงกับรูปแบบได้
- เปิดไฟล์การกำหนดค่า Edge Micro:
~/.edgemicro/org-env-config.yaml
- เพิ่มองค์ประกอบพร็อกซีPattern ใน edge_config ตัวอย่างเช่น รูปแบบต่อไปนี้จะดาวน์โหลดพร็อกซี เช่น edgemicro_foo, edgemicro_fast และ edgemicro_first
edge_config: … proxyPattern: edgemicro_f*
การระบุผลิตภัณฑ์โดยไม่มีพร็อกซี API
ใน Apigee Edge คุณจะสร้างผลิตภัณฑ์ API ที่ไม่มีพร็อกซี API ได้ การกำหนดค่าผลิตภัณฑ์นี้อนุญาตให้คีย์ API ที่เชื่อมโยงกับผลิตภัณฑ์นั้นใช้งานกับพร็อกซีที่ทำให้ใช้งานได้ในองค์กร Edge Microgateway รองรับการกำหนดค่าผลิตภัณฑ์นี้ตั้งแต่เวอร์ชัน 2.5.4
การแก้ไขข้อบกพร่องและการแก้ปัญหา
กำลังเชื่อมต่อกับโปรแกรมแก้ไขข้อบกพร่อง
คุณสามารถเรียกใช้ Edge Microgateway กับโปรแกรมแก้ไขข้อบกพร่อง เช่น เครื่องมือตรวจสอบโหนด ซึ่งเป็นประโยชน์ในการแก้ปัญหาและแก้ไขข้อบกพร่องของปลั๊กอินที่กำหนดเอง
- รีสตาร์ท Edge Microgateway ในโหมดแก้ไขข้อบกพร่อง ซึ่งทำได้โดยการเพิ่ม
DEBUG=*
ด้านหน้าของคำสั่งstart
เช่นDEBUG=* edgemicro start -o myorg -e test -k db4e9e8a95aa7fabfdeacbb1169d0a8cbe42bec19c6b98129e02 -s 6e56af7c1b26dfe93dae78a735c8afc9796b077d105ae5618ce7ed
- เริ่มใช้โปรแกรมแก้ไขข้อบกพร่องและตั้งค่าเพื่อฟังหมายเลขพอร์ตสำหรับกระบวนการแก้ไขข้อบกพร่อง
- ตอนนี้คุณสามารถดูโค้ด Edge Microgateway, ตั้งค่าเบรกพอยท์, นิพจน์การดู และอื่นๆ ได้แล้ว
คุณระบุแฟล็ก Node.js มาตรฐานที่เกี่ยวข้องกับโหมดแก้ไขข้อบกพร่องได้ ตัวอย่างเช่น --nolazy
จะช่วยแก้ไขข้อบกพร่องของโค้ดแบบอะซิงโครนัส
กำลังตรวจสอบไฟล์บันทึก
หากพบปัญหา โปรดตรวจสอบไฟล์บันทึกเพื่อดูรายละเอียดการดำเนินการและข้อมูลข้อผิดพลาด โปรดดูรายละเอียดที่หัวข้อการจัดการไฟล์บันทึก
การใช้ความปลอดภัยของคีย์ API
คีย์ API เป็นกลไกแบบง่ายๆ ในการตรวจสอบสิทธิ์ไคลเอ็นต์ที่ส่งคำขอไปยัง Edge Microgateway คุณรับคีย์ API ได้โดยการคัดลอกค่าคีย์ผู้บริโภค (หรือเรียกอีกอย่างว่ารหัสไคลเอ็นต์) จากผลิตภัณฑ์ Apigee Edge ที่มีพร็อกซีการตรวจสอบสิทธิ์ Edge Microgateway
การแคชคีย์
คีย์ API จะแลกเปลี่ยนกับโทเค็นสำหรับผู้ถือ ซึ่งแคชเอาไว้ คุณปิดใช้การแคชได้โดยตั้งค่าส่วนหัว Cache-Control: no-cache
ในคำขอขาเข้าไปยัง Edge Microgateway
การใช้คีย์ API
คุณส่งคีย์ API ในคำขอ API ได้ทั้งแบบพารามิเตอร์การค้นหาหรือในส่วนหัว โดยค่าเริ่มต้น ส่วนหัวและชื่อพารามิเตอร์การค้นหาจะเป็น x-api-key
ทั้งคู่
ตัวอย่างพารามิเตอร์การค้นหา
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
ตัวอย่างส่วนหัว:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
การกำหนดค่าชื่อคีย์ API
โดยค่าเริ่มต้น x-api-key
คือชื่อที่ใช้สำหรับทั้งส่วนหัวของคีย์ API และพารามิเตอร์การค้นหา
คุณสามารถเปลี่ยนค่าเริ่มต้นนี้ในไฟล์การกำหนดค่าได้ ตามที่อธิบายไว้ในการเปลี่ยนแปลงการกําหนดค่า เช่น หากต้องการเปลี่ยนชื่อเป็น apiKey ให้ทำดังนี้
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
ในตัวอย่างนี้ ทั้งพารามิเตอร์การค้นหาและชื่อส่วนหัวเปลี่ยนเป็น apiKey
ชื่อ x-api-key
จะใช้งานไม่ได้อีกทั้ง 2 กรณี ดูเพิ่มเติมที่การเปลี่ยนแปลงการกำหนดค่า
เช่น
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้คีย์ API กับคำขอพร็อกซีได้ที่ Secure Edge Microgateway
การใช้การรักษาความปลอดภัยโทเค็น OAuth2
ส่วนนี้จะอธิบายวิธีรับโทเค็นเพื่อการเข้าถึง OAuth2 และรีเฟรชโทเค็น โทเค็นเพื่อการเข้าถึงจะใช้ในการเรียก API ที่ปลอดภัยผ่านไมโครเกตเวย์ ใช้โทเค็นการรีเฟรชเพื่อรับโทเค็นเพื่อการเข้าถึงใหม่
วิธีรับโทเค็นเพื่อการเข้าถึง
ส่วนนี้จะอธิบายวิธีใช้พร็อกซี edgemicro-auth
เพื่อรับโทเค็นเพื่อการเข้าถึง
นอกจากนี้ คุณยังรับโทเค็นเพื่อการเข้าถึงได้โดยใช้คำสั่ง CLI ของ edgemicro token
โปรดดูรายละเอียดเกี่ยวกับ CLI ที่การจัดการโทเค็น
API 1
แทนที่ชื่อองค์กรและสภาพแวดล้อมใน URL และแทนที่ค่า Consumer ID และ Consumer Secret ที่ได้รับจากแอปของนักพัฒนาซอฟต์แวร์ใน Apigee Edge สำหรับพารามิเตอร์เนื้อหา client_id และ client_secret
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \ -d '{"grant_type": "client_credentials", "client_id": "your_client_id", \ "client_secret": "your_client_secret"}' -H "Content-Type: application/json"
API 2
(เพิ่มใน v2.5.31) ส่งข้อมูลเข้าสู่ระบบของไคลเอ็นต์เป็นส่วนหัวการตรวจสอบสิทธิ์พื้นฐานและgrant_type
เป็นพารามิเตอร์ของฟอร์ม นอกจากนี้ยังมีการพูดถึงแบบฟอร์มคำสั่งนี้ใน RFC 6749: เฟรมเวิร์กการให้สิทธิ์ OAuth 2.0 อีกด้วย
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
ตัวอย่างเอาต์พุต
API แสดงผลการตอบกลับ JSON โปรดทราบว่าไม่มีความแตกต่างระหว่างพร็อพเพอร์ตี้token
และ access_token
คุณจะใช้วิธีใดวิธีหนึ่งก็ได้
{ "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": "108000" }
วิธีรับโทเค็นการรีเฟรช
หากต้องการรับโทเค็นการรีเฟรช ให้เรียก API ไปยังปลายทาง /token
ของพร็อกซี edgemicro-auth
คุณต้องเรียก API นี้ด้วยประเภทการให้สิทธิ์ password
ขั้นตอนต่างๆ ต่อไปนี้จะช่วยแนะนำขั้นตอนตลอดกระบวนการ
- รับสิทธิ์เข้าถึงและโทเค็นการรีเฟรชด้วย
/token
API โปรดทราบว่าประเภทการให้สิทธิ์คือpassword
:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'
API จะแสดงโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรช การตอบกลับมีลักษณะเช่นนี้
{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": "108000", "refresh_token": "your-refresh-token", "refresh_token_expires_in": "431999", "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" }
- คุณใช้โทเค็นการรีเฟรชเพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ได้แล้วโดยเรียกใช้ปลายทาง
/refresh
ของ API เดียวกัน ตัวอย่างเช่นcurl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'
API จะแสดงโทเค็นเพื่อการเข้าถึงใหม่ คำตอบจะมีลักษณะดังนี้
{ "token": "your-new-access-token" }
การตรวจสอบตลอดไป
Forever เป็นเครื่องมือ Node.js ที่รีสตาร์ทแอป Node.js โดยอัตโนมัติในกรณีที่กระบวนการล่มหรือมีข้อผิดพลาด Edge Microgateway มีไฟล์ forever.json ที่คุณกําหนดค่าได้เพื่อควบคุมจํานวนครั้งและช่วงเวลาที่ควรรีสตาร์ท Edge Microgateway ไฟล์นี้กำหนดค่าบริการ Forever ที่ชื่อว่า forever-monitor ซึ่งจัดการ Forever แบบเป็นโปรแกรม
ไฟล์ forever.json จะอยู่ในไดเรกทอรีการติดตั้งรูทของ Edge Microgateway ดูว่า Edge Microgateway ติดตั้งอยู่ที่ใด โปรดดูรายละเอียดเกี่ยวกับตัวเลือกการกำหนดค่าในเอกสารประกอบการตรวจสอบตลอดไป
คำสั่ง edgemicro forever
ประกอบด้วยแฟล็กที่ช่วยให้คุณระบุตำแหน่งของไฟล์ forever.json
(แฟล็ก -f
) และเริ่ม/หยุดกระบวนการตรวจสอบถาวร (แฟล็ก -a
) เช่น
edgemicro forever -f ~/mydir/forever.json -a start
ดูข้อมูลเพิ่มเติมได้ที่การตรวจสอบตลอดไปในข้อมูลอ้างอิง CLI
การระบุปลายทางของไฟล์การกำหนดค่า
หากเรียกใช้อินสแตนซ์ Edge Microgateway หลายรายการ คุณอาจต้องจัดการการกำหนดค่าจากอินสแตนซ์เดียว ซึ่งทำได้โดยการระบุปลายทาง HTTP ที่ Edge Micro ดาวน์โหลดไฟล์การกำหนดค่าได้ คุณระบุปลายทางนี้ได้เมื่อเริ่ม Edge Micro โดยใช้แฟล็ก -u
เช่น
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
โดยที่ปลายทาง mgconfig จะแสดงเนื้อหาของไฟล์การกำหนดค่า นี่คือไฟล์ที่ โดยค่าเริ่มต้นจะอยู่ใน ~/.edgemicro
และมีรูปแบบการตั้งชื่อเป็น org-env-config.yaml
การปิดใช้บัฟเฟอร์ข้อมูลการเชื่อมต่อ TCP
คุณใช้แอตทริบิวต์การกำหนดค่า nodelay
เพื่อปิดใช้การบัฟเฟอร์ข้อมูลสำหรับการเชื่อมต่อ TCP ที่ Edge Microgateway ใช้งานได้
โดยค่าเริ่มต้น การเชื่อมต่อ TCP จะใช้อัลกอริทึม Nagle เพื่อบัฟเฟอร์ข้อมูลก่อนส่ง การตั้งค่า nodelay
เป็น true
ระบบจะปิดใช้ลักษณะการทำงานนี้ (ข้อมูลจะเริ่มการทำงานของข้อมูลทันทีทุกครั้งที่มีการเรียก socket.write()
) ดูรายละเอียดเพิ่มเติมในเอกสารประกอบสำหรับ Node.js
หากต้องการเปิดใช้ nodelay
ให้แก้ไขไฟล์การกำหนดค่า Edge Micro ดังนี้
edgemicro: nodelay: true port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
การเรียกใช้ Edge Microgateway ในโหมดสแตนด์อโลน
คุณสามารถเรียกใช้ Edge Microgateway แยกจากทรัพยากร Dependency ของ Apigee Edge โดยสมบูรณ์ สถานการณ์นี้เรียกว่าโหมดสแตนด์อโลน ซึ่งให้คุณเรียกใช้และทดสอบ Edge Microgateway ได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต
ในโหมดสแตนด์อโลน ฟีเจอร์ต่อไปนี้จะไม่ทำงานเนื่องจากต้องมีการเชื่อมต่อกับ Apigee Edge
- OAuth และคีย์ API
- โควต้า
- Analytics
ในทางตรงกันข้าม ปลั๊กอินที่กำหนดเองและการป้องกันการเพิ่มขึ้นอย่างรวดเร็วจะทำงานตามปกติ เนื่องจากไม่จำเป็นต้องเชื่อมต่อกับ Apigee Edge นอกจากนี้ ปลั๊กอินใหม่ที่ชื่อว่า extauth
ยังให้คุณให้สิทธิ์การเรียก API ไปยัง Microgateway ด้วย JWT ขณะอยู่ในโหมดสแตนด์อโลนได้ด้วย
การกําหนดค่าและเริ่มต้นเกตเวย์
วิธีเรียกใช้ Edge Microgateway ในโหมดสแตนด์อโลน:
- ตรวจสอบว่าคุณได้ติดตั้ง Edge Microgateway เวอร์ชัน 2.5.25 ขึ้นไป หากใช้ไม่ได้ คุณต้องเรียกใช้คำสั่งต่อไปนี้เพื่ออัปเกรดเป็นเวอร์ชันล่าสุด
npm install -g edgemicro
หากต้องการความช่วยเหลือ โปรดดูที่การติดตั้ง Edge Microgateway
- สร้างไฟล์การกำหนดค่าที่มีชื่อดังนี้
$HOME/.edgemicro/
org_name-
env_name-config.yaml
เช่น
vi $HOME/.edgemicro/foo-bar-config.yaml
- วางโค้ดต่อไปนี้ลงในไฟล์
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0
- ส่งออกตัวแปรสภาพแวดล้อมต่อไปนี้ด้วยค่า "1"
export EDGEMICRO_LOCAL=1
- เรียกใช้คำสั่ง
start
ต่อไปนี้ ซึ่งคุณระบุค่าเพื่อสร้างอินสแตนซ์พร็อกซีในเครื่อง:edgemicro start -o org_name -e environment_name -a local_proxy_name \ -v local_proxy_version -t target_url -b base_path
โดยที่
- your_org คือชื่อ "org" ที่คุณใช้ในชื่อไฟล์การกำหนดค่า
- your_environment คือชื่อ "env" ที่คุณใช้ในชื่อไฟล์การกำหนดค่า
- local_proxy_name คือชื่อของพร็อกซีในเครื่องที่จะสร้างขึ้น คุณสามารถใช้ชื่อใดก็ได้ตามต้องการ
- local_proxy_version คือหมายเลขเวอร์ชันของพร็อกซี
- target_url คือ URL สำหรับเป้าหมายของพร็อกซี (เป้าหมายคือบริการที่พร็อกซีเรียกใช้)
- base_path คือเส้นทางฐานของพร็อกซี โดยค่านี้ต้องขึ้นต้นด้วยเครื่องหมายทับ สำหรับเส้นทางฐานราก ให้ระบุเฉพาะเครื่องหมายทับ เช่น "/"
เช่น
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- ทดสอบการกำหนดค่า
curl http://localhost:8000/echo { "error" : "missing_authorization" }
คุณได้รับข้อผิดพลาด "missing_Authorization" เนื่องจากปลั๊กอิน
extauth
อยู่ในไฟล์foo-bar-config.yaml
ปลั๊กอินนี้จะตรวจสอบ JWT ที่ต้องแสดงในส่วนหัวการให้สิทธิ์ของการเรียก API ในส่วนถัดไป คุณจะได้รับ JWT ที่จะทำให้การเรียก API ผ่านไปได้โดยไม่มีข้อผิดพลาด
ตัวอย่าง: การรับโทเค็นการให้สิทธิ์
ตัวอย่างต่อไปนี้แสดงวิธีรับ JWT จากปลายทาง Edge Microgateway JWT ใน Apigee Edge (edgemicro-auth/jwkPublicKeys
)
ระบบจะทำให้ปลายทางนี้ใช้งานได้เมื่อคุณทำการตั้งค่าและการกำหนดค่ามาตรฐานของ Edge Microgateway
หากต้องการรับ JWT จากปลายทาง Apigee ก่อนอื่นคุณต้องตั้งค่า Edge Microgateway มาตรฐานและเชื่อมต่อกับอินเทอร์เน็ต เราจะใช้ปลายทาง Apigee ในตัวอย่างนี้เท่านั้นและไม่จำเป็นต้องใช้ คุณใช้ปลายทางโทเค็น JWT อื่นได้หากต้องการ หากทำ คุณจะต้องรับ JWT โดยใช้ API ที่ให้ไว้สำหรับปลายทางนั้น
ขั้นตอนต่อไปนี้อธิบายวิธีรับโทเค็นโดยใช้ปลายทาง edgemicro-auth/jwkPublicKeys
- คุณต้องดำเนินการตั้งค่าและการกำหนดค่ามาตรฐานของ Edge Microgateway เพื่อทำให้พร็อกซี
edgemicro-auth
ใช้งานได้ในองค์กร/สภาพแวดล้อมใน Apigee Edge หากเคยทำขั้นตอนนี้แล้ว ก็ไม่ต้องทำซ้ำ - หากติดตั้งใช้งาน Edge Microgateway กับ Apigee Cloud คุณต้องเชื่อมต่ออินเทอร์เน็ตเพื่อรับ JWT จากปลายทางนี้
-
หยุด Edge Microgateway:
edgemicro stop
- ในไฟล์การกำหนดค่าที่สร้างไว้ก่อนหน้านี้ (
$HOME/.edgemicro
/org-env-config.yaml
) ให้ชี้แอตทริบิวต์extauth:publickey_url
ไปยังปลายทางedgemicro-auth/jwkPublicKeys
ในองค์กร/สภาพแวดล้อม Apigee Edge ตัวอย่างเช่นextauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
-
รีสตาร์ท Edge Microgateway เหมือนที่ทำก่อนหน้านี้โดยใช้ชื่อ org/env ที่คุณใช้ในชื่อไฟล์การกำหนดค่า ตัวอย่างเช่น
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
-
รับโทเค็น JWT จากปลายทางการให้สิทธิ์ เนื่องจากคุณใช้ปลายทาง
edgemicro-auth/jwkPublicKeys
คุณจึงใช้คำสั่ง CLI นี้ได้
คุณสร้าง JWT สำหรับ Edge Microgateway ได้โดยใช้คำสั่ง edgemicro token
หรือ API เช่น
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
โดยที่
- your_org คือชื่อขององค์กร Apigee ที่คุณเคยกำหนดค่า Edge Microgateway ไว้ก่อนหน้านี้
- your_env เป็นสภาพแวดล้อมในองค์กร
- ตัวเลือก
i
จะระบุคีย์ของผู้บริโภคจากแอปนักพัฒนาซอฟต์แวร์ที่มีผลิตภัณฑ์ที่มีพร็อกซีedgemicro-auth
- ตัวเลือก
s
ระบุข้อมูลลับของผู้บริโภคจากแอปของนักพัฒนาซอฟต์แวร์ที่มีผลิตภัณฑ์ที่มีพร็อกซีedgemicro-auth
คำสั่งนี้จะขอให้ Apigee Edge สร้าง JWT ที่จะใช้ยืนยันการเรียก API ได้
โปรดดูหัวข้อสร้างโทเค็นทดสอบการกำหนดค่าแบบสแตนด์อโลน
หากต้องการทดสอบการกำหนดค่า ให้เรียกใช้ API ด้วยโทเค็นที่เพิ่มในส่วนหัวการให้สิทธิ์ ดังนี้
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
ตัวอย่าง
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
ตัวอย่างเอาต์พุต
{ "headers":{ "user-agent":"curl/7.54.0", "accept":"*/*", "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP", "client_received_start_timestamp":"1535134472699", "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==", "target_sent_start_timestamp":"1535134472702", "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896", "x-forwarded-proto":"http", "x-forwarded-host":"localhost:8000", "host":"mocktarget.apigee.net", "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513", "via":"1.1 localhost, 1.1 google", "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212", "connection":"Keep-Alive" }, "method":"GET", "url":"/", "body":"" }
การใช้โหมดพร็อกซีในระบบ
ในโหมดพร็อกซีภายใน Edge Microgateway ไม่จำเป็นต้องใช้พร็อกซี microgateway-aware จึงจะทำให้ใช้งานได้ใน Apigee Edge แต่คุณจะกำหนดค่า "พร็อกซีในเครื่อง" แทนได้โดยระบุชื่อพร็อกซีในเครื่อง, เส้นทางพื้นฐาน และ URL เป้าหมายเมื่อคุณเริ่มต้นไมโครเกต จากนั้นการเรียก API ไปยัง Microgateway จะถูกส่งไปยัง URL เป้าหมายของพร็อกซีในเครื่อง ในด้านอื่นๆ ทั้งหมด โหมดพร็อกซีภายในจะทำงานเหมือนกับการเรียกใช้ Edge Microgateway ในโหมดปกติทุกประการ การตรวจสอบสิทธิ์จะทำงานในลักษณะเดียวกับการยับยั้งการเพิ่มขึ้นอย่างรวดเร็วและการบังคับใช้โควต้า ปลั๊กอินที่กำหนดเอง และอื่นๆ
กรณีการใช้งานและตัวอย่าง
โหมดพร็อกซีในเครื่องมีประโยชน์เมื่อคุณต้องเชื่อมโยงพร็อกซีเดียวกับอินสแตนซ์ Edge Microgateway เท่านั้น ตัวอย่างเช่น คุณสามารถแทรก Edge Microgateway ลงใน Kubernetes เป็นพร็อกซีไฟล์ช่วยเหลือ โดยที่แต่ละ Microgateway และบริการจะทำงานในพ็อดเดียว และที่ไมโครเกตเวย์จะจัดการการรับส่งข้อมูลไปยังและจากบริการร่วม รูปต่อไปนี้แสดงสถาปัตยกรรมนี้ที่ Edge Microgateway เป็นพร็อกซีไฟล์ช่วยเหลือในคลัสเตอร์ Kubernetes อินสแตนซ์ไมโครเกตเวย์แต่ละรายการจะสื่อสาร กับปลายทางเดียวในบริการที่ใช้ร่วมกันเท่านั้น
ประโยชน์ของสถาปัตยกรรมรูปแบบนี้คือ Edge Microgateway ที่มีการจัดการ API สำหรับบริการแต่ละรายการที่ทำให้ใช้งานได้กับสภาพแวดล้อมคอนเทนเนอร์ เช่น คลัสเตอร์ Kubernetes
การกำหนดค่าโหมดพร็อกซีในระบบ
หากต้องการกำหนดค่า Edge Microgateway ให้ทำงานในโหมดพร็อกซีภายใน ให้ทำตามขั้นตอนต่อไปนี้
- ตรวจสอบว่าคุณได้ติดตั้ง Edge Microgateway เวอร์ชัน 2.5.25 ขึ้นไป หากใช้ไม่ได้ คุณต้องเรียกใช้คำสั่งต่อไปนี้เพื่ออัปเกรดเป็นเวอร์ชันล่าสุด
npm install -g edgemicro
หากต้องการความช่วยเหลือ โปรดดูที่การติดตั้ง Edge Microgateway
- เรียกใช้
edgemicro init
เพื่อตั้งค่าสภาพแวดล้อมการกำหนดค่าในเครื่อง ซึ่งเหมือนกับการตั้งค่า Edge Microgateway ทั่วไป โปรดดูเพิ่มเติมที่กำหนดค่า Edge Microgateway - เรียกใช้
edgemicro configure
แบบเดียวกับที่คุณจะทำในขั้นตอนการตั้งค่า Edge Microgateway ทั่วไป ตัวอย่างedgemicro configure -o your_org -e your_env -u your_apigee_username
คำสั่งนี้จะทำให้นโยบาย edgemicro-auth ใช้งานได้ และแสดงผลคีย์และข้อมูลลับที่ต้องใช้เพื่อเริ่ม microgateway หากต้องการความช่วยเหลือ โปรดดูที่กำหนดค่า Edge Microgateway
- ใน Apigee Edge ให้สร้างผลิตภัณฑ์ API และมีข้อกำหนดการกำหนดค่าที่จำเป็นต่อไปนี้ (คุณจัดการการกำหนดค่าอื่นๆ ทั้งหมดได้ตามต้องการ)
- คุณต้องเพิ่มพร็อกซี edgemicro-auth ลงในผลิตภัณฑ์ ระบบได้ทำให้พร็อกซีนี้ใช้งานได้โดยอัตโนมัติเมื่อคุณเรียกใช้
edgemicro configure
- คุณต้องระบุเส้นทางทรัพยากร Apigee ขอแนะนำให้เพิ่มเส้นทางนี้ไปยังผลิตภัณฑ์:
/**
หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่การกำหนดค่าการทำงานของเส้นทางทรัพยากร โปรดดูเพิ่มเติมที่สร้างผลิตภัณฑ์ API ในเอกสารประกอบของ Edge
- คุณต้องเพิ่มพร็อกซี edgemicro-auth ลงในผลิตภัณฑ์ ระบบได้ทำให้พร็อกซีนี้ใช้งานได้โดยอัตโนมัติเมื่อคุณเรียกใช้
โปรดสร้างนักพัฒนาซอฟต์แวร์ใน Apigee Edge หรือจะใช้นักพัฒนาซอฟต์แวร์ที่มีอยู่ก็ได้หากต้องการ สำหรับความช่วยเหลือ โปรดดูการเพิ่มนักพัฒนาซอฟต์แวร์โดยใช้ UI การจัดการ Edge
- สร้างแอปนักพัฒนาซอฟต์แวร์ใน Apigee Edge คุณต้องเพิ่มผลิตภัณฑ์ API ที่คุณเพิ่งสร้างลงในแอป หากต้องการความช่วยเหลือ โปรดดูการลงทะเบียนแอปใน UI การจัดการ Edge
- ในเครื่องที่ติดตั้ง Edge Microgateway ให้ส่งออกตัวแปรสภาพแวดล้อมต่อไปนี้ด้วยค่า "1"
export EDGEMICRO_LOCAL_PROXY=1
- ใช้คำสั่ง
start
ต่อไปนี้edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_path
โดยที่
- your_org คือองค์กร Apigee ของคุณ
- your_environment เป็นสภาพแวดล้อมในองค์กรของคุณ
- your_key คือคีย์ที่ส่งคืนเมื่อคุณเรียกใช้
edgemicro configure
- your_secret คือข้อมูลลับที่ส่งคืนเมื่อคุณเรียกใช้
edgemicro configure
- local_proxy_name คือชื่อของพร็อกซีในเครื่องที่จะสร้างขึ้น
- local_proxy_version คือหมายเลขเวอร์ชันของพร็อกซี
- target_url คือ URL เป้าหมายของพร็อกซี (บริการที่พร็อกซีจะเรียกใช้)
- base_path คือเส้นทางฐานของพร็อกซี โดยค่านี้ต้องขึ้นต้นด้วยเครื่องหมายทับ สำหรับเส้นทางฐานราก ให้ระบุเฉพาะเครื่องหมายทับ เช่น "/"
เช่น
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
การทดสอบการกำหนดค่า
คุณสามารถทดสอบการกำหนดค่าพร็อกซีในเครื่องได้โดยเรียกใช้ปลายทางของพร็อกซี ตัวอย่างเช่น หากคุณระบุเส้นทางฐานเป็น /echo
คุณสามารถเรียกพร็อกซีได้ดังนี้
curl http://localhost:8000/echo { "error" : "missing_authorization", "error_description" : "Missing Authorization header" }
การเรียก API เริ่มต้นนี้ทำให้เกิดข้อผิดพลาดเนื่องจากคุณไม่ได้ระบุคีย์ API ที่ถูกต้อง คุณค้นหาคีย์ได้ในแอปนักพัฒนาซอฟต์แวร์ ที่สร้างไว้ก่อนหน้านี้ เปิดแอปใน Edge UI คัดลอกคีย์ผู้บริโภค แล้วใช้คีย์ดังกล่าวดังนี้
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
เช่น
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
ตัวอย่างเอาต์พุต
{ "headers":{ "user-agent":"curl/7.54.0", "accept":"*/*", "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP", "client_received_start_timestamp":"1535134472699", "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==", "target_sent_start_timestamp":"1535134472702", "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896", "x-forwarded-proto":"http", "x-forwarded-host":"localhost:8000", "host":"mocktarget.apigee.net", "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513", "via":"1.1 localhost, 1.1 google", "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212", "connection":"Keep-Alive" }, "method":"GET", "url":"/", "body":"" }