การอ้างอิงการดำเนินการและการกำหนดค่าสำหรับ Edge Microgateway

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

Edge Microgateway เวอร์ชัน 2.5.x

หัวข้อนี้จะกล่าวถึงวิธีจัดการและกำหนดค่า Edge Microgateway

การอัปเกรด Edge Microgateway หากมีการเชื่อมต่ออินเทอร์เน็ต

  1. เรียกใช้คำสั่ง npm ต่อไปนี้เพื่ออัปเกรดเป็น Edge Microgateway เวอร์ชันล่าสุด:
    npm upgrade edgemicro -g

    หากต้องการอัปเกรดเป็น Edge Microgateway เวอร์ชันที่เฉพาะเจาะจง คุณจะต้องระบุหมายเลขเวอร์ชันในคำสั่งการอัปเกรด หากไม่ระบุหมายเลขเวอร์ชัน ระบบจะติดตั้งเวอร์ชันล่าสุด เช่น หากต้องการอัปเกรดเป็นเวอร์ชัน 2.5.26 ให้ใช้คำสั่งต่อไปนี้

    npm upgrade edgemicro@2.5.26 -g
  2. โปรดตรวจสอบหมายเลขเวอร์ชัน ตัวอย่างเช่น หากคุณติดตั้งเวอร์ชัน 2.5.26:
    edgemicro --version
    current nodejs version is v8.9.0
    current edgemicro version is 2.5.26
        
  3. ขั้นสุดท้าย ให้อัปเกรดพร็อกซี 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 init
edgemicro configure [params]
edgemicro start [params]

ไฟล์การกำหนดค่าเริ่มต้นสำหรับอินสแตนซ์ Edge Microgateway ที่เริ่มต้นใหม่

เมื่อเรียกใช้ edgemicro init ไฟล์การกำหนดค่าระบบ (ตามที่อธิบายไว้ด้านบน) default.yaml จะอยู่ในไดเรกทอรี ~/.edgemicro

หากเปลี่ยนไฟล์การกำหนดค่าใน ~/.edgemicro คุณต้องกำหนดค่าอีกครั้งและรีสตาร์ท Edge Microgateway ดังนี้

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

ไฟล์การกำหนดค่าแบบไดนามิกสำหรับอินสแตนซ์ที่ทำงานอยู่

เมื่อเรียกใช้ edgemicro configure [params] ระบบจะสร้างไฟล์การกำหนดค่าแบบไดนามิกใน ~/.edgemicro ไฟล์จะตั้งชื่อตามรูปแบบนี้ org-env-config.yaml โดยที่ org และ env คือชื่อองค์กรและสภาพแวดล้อม Apigee Edge ของคุณ คุณสามารถใช้ไฟล์นี้เพื่อทำการเปลี่ยนแปลงการกำหนดค่า แล้วโหลดอีกครั้งโดยไม่มีช่วงพัก ตัวอย่างเช่น หากคุณเพิ่มและกำหนดค่าปลั๊กอิน คุณจะโหลดการกำหนดค่าซ้ำได้โดยไม่เกิดช่วงพักการใช้งานตามที่อธิบายไว้ด้านล่าง

หาก Edge Microgateway ทำงานอยู่ (ตัวเลือกช่วงพักเป็นศูนย์)

  1. โหลดการกำหนดค่า 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 หยุดทำงาน:

  1. รีสตาร์ท 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 ให้ทำตามขั้นตอนต่อไปนี้:

  1. สร้างหรือรับใบรับรอง SSL และคีย์โดยใช้ยูทิลิตี openssl หรือวิธีที่คุณต้องการ
  2. เพิ่มแอตทริบิวต์ 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
  3. รีสตาร์ท 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) ช่วงเวลาเป็นชั่วโมงเมื่อหมุนไฟล์บันทึก
  • ปลั๊กอิน: ปลั๊กอินจะเพิ่มฟังก์ชันการทำงานให้กับ 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_" คุณสามารถเปลี่ยนค่าเริ่มต้นนี้เพื่อดาวน์โหลดพร็อกซีที่มีชื่อตรงกับรูปแบบได้

  1. เปิดไฟล์การกำหนดค่า Edge Micro: ~/.edgemicro/org-env-config.yaml
  2. เพิ่มองค์ประกอบพร็อกซี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 กับโปรแกรมแก้ไขข้อบกพร่อง เช่น เครื่องมือตรวจสอบโหนด ซึ่งเป็นประโยชน์ในการแก้ปัญหาและแก้ไขข้อบกพร่องของปลั๊กอินที่กำหนดเอง

  1. รีสตาร์ท Edge Microgateway ในโหมดแก้ไขข้อบกพร่อง ซึ่งทำได้โดยการเพิ่ม DEBUG=* ด้านหน้าของคำสั่ง start เช่น
    DEBUG=* edgemicro start -o  myorg -e test -k
          db4e9e8a95aa7fabfdeacbb1169d0a8cbe42bec19c6b98129e02 -s
          6e56af7c1b26dfe93dae78a735c8afc9796b077d105ae5618ce7ed
  2. เริ่มใช้โปรแกรมแก้ไขข้อบกพร่องและตั้งค่าเพื่อฟังหมายเลขพอร์ตสำหรับกระบวนการแก้ไขข้อบกพร่อง
  3. ตอนนี้คุณสามารถดูโค้ด 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 ขั้นตอนต่างๆ ต่อไปนี้จะช่วยแนะนำขั้นตอนตลอดกระบวนการ

  1. รับสิทธิ์เข้าถึงและโทเค็นการรีเฟรชด้วย /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"
    }
  2. คุณใช้โทเค็นการรีเฟรชเพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ได้แล้วโดยเรียกใช้ปลายทาง /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 ในโหมดสแตนด์อโลน:

  1. ตรวจสอบว่าคุณได้ติดตั้ง Edge Microgateway เวอร์ชัน 2.5.25 ขึ้นไป หากใช้ไม่ได้ คุณต้องเรียกใช้คำสั่งต่อไปนี้เพื่ออัปเกรดเป็นเวอร์ชันล่าสุด
    npm install -g edgemicro

    หากต้องการความช่วยเหลือ โปรดดูที่การติดตั้ง Edge Microgateway

  2. สร้างไฟล์การกำหนดค่าที่มีชื่อดังนี้ $HOME/.edgemicro/org_name-env_name-config.yaml

    เช่น

    vi $HOME/.edgemicro/foo-bar-config.yaml
  3. วางโค้ดต่อไปนี้ลงในไฟล์
    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
  4. ส่งออกตัวแปรสภาพแวดล้อมต่อไปนี้ด้วยค่า "1"
    export EDGEMICRO_LOCAL=1
  5. เรียกใช้คำสั่ง 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 /
  6. ทดสอบการกำหนดค่า
    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

  1. คุณต้องดำเนินการตั้งค่าและการกำหนดค่ามาตรฐานของ Edge Microgateway เพื่อทำให้พร็อกซี edgemicro-auth ใช้งานได้ในองค์กร/สภาพแวดล้อมใน Apigee Edge หากเคยทำขั้นตอนนี้แล้ว ก็ไม่ต้องทำซ้ำ
  2. หากติดตั้งใช้งาน Edge Microgateway กับ Apigee Cloud คุณต้องเชื่อมต่ออินเทอร์เน็ตเพื่อรับ JWT จากปลายทางนี้
  3. หยุด Edge Microgateway:
    edgemicro stop
  4. ในไฟล์การกำหนดค่าที่สร้างไว้ก่อนหน้านี้ ($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'
  5. รีสตาร์ท Edge Microgateway เหมือนที่ทำก่อนหน้านี้โดยใช้ชื่อ org/env ที่คุณใช้ในชื่อไฟล์การกำหนดค่า ตัวอย่างเช่น
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. รับโทเค็น 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 อินสแตนซ์ไมโครเกตเวย์แต่ละรายการจะสื่อสาร กับปลายทางเดียวในบริการที่ใช้ร่วมกันเท่านั้น

Edgemicro เป็น Sidecar

ประโยชน์ของสถาปัตยกรรมรูปแบบนี้คือ Edge Microgateway ที่มีการจัดการ API สำหรับบริการแต่ละรายการที่ทำให้ใช้งานได้กับสภาพแวดล้อมคอนเทนเนอร์ เช่น คลัสเตอร์ Kubernetes

การกำหนดค่าโหมดพร็อกซีในระบบ

หากต้องการกำหนดค่า Edge Microgateway ให้ทำงานในโหมดพร็อกซีภายใน ให้ทำตามขั้นตอนต่อไปนี้

  1. ตรวจสอบว่าคุณได้ติดตั้ง Edge Microgateway เวอร์ชัน 2.5.25 ขึ้นไป หากใช้ไม่ได้ คุณต้องเรียกใช้คำสั่งต่อไปนี้เพื่ออัปเกรดเป็นเวอร์ชันล่าสุด
    npm install -g edgemicro

    หากต้องการความช่วยเหลือ โปรดดูที่การติดตั้ง Edge Microgateway

  2. เรียกใช้ edgemicro init เพื่อตั้งค่าสภาพแวดล้อมการกำหนดค่าในเครื่อง ซึ่งเหมือนกับการตั้งค่า Edge Microgateway ทั่วไป โปรดดูเพิ่มเติมที่กำหนดค่า Edge Microgateway
  3. เรียกใช้ edgemicro configure แบบเดียวกับที่คุณจะทำในขั้นตอนการตั้งค่า Edge Microgateway ทั่วไป ตัวอย่าง
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    คำสั่งนี้จะทำให้นโยบาย edgemicro-auth ใช้งานได้ และแสดงผลคีย์และข้อมูลลับที่ต้องใช้เพื่อเริ่ม microgateway หากต้องการความช่วยเหลือ โปรดดูที่กำหนดค่า Edge Microgateway

  4. ใน Apigee Edge ให้สร้างผลิตภัณฑ์ API และมีข้อกำหนดการกำหนดค่าที่จำเป็นต่อไปนี้ (คุณจัดการการกำหนดค่าอื่นๆ ทั้งหมดได้ตามต้องการ)
    • คุณต้องเพิ่มพร็อกซี edgemicro-auth ลงในผลิตภัณฑ์ ระบบได้ทำให้พร็อกซีนี้ใช้งานได้โดยอัตโนมัติเมื่อคุณเรียกใช้ edgemicro configure
    • คุณต้องระบุเส้นทางทรัพยากร Apigee ขอแนะนำให้เพิ่มเส้นทางนี้ไปยังผลิตภัณฑ์: /** หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่การกำหนดค่าการทำงานของเส้นทางทรัพยากร โปรดดูเพิ่มเติมที่สร้างผลิตภัณฑ์ API ในเอกสารประกอบของ Edge
  5. โปรดสร้างนักพัฒนาซอฟต์แวร์ใน Apigee Edge หรือจะใช้นักพัฒนาซอฟต์แวร์ที่มีอยู่ก็ได้หากต้องการ สำหรับความช่วยเหลือ โปรดดูการเพิ่มนักพัฒนาซอฟต์แวร์โดยใช้ UI การจัดการ Edge

  6. สร้างแอปนักพัฒนาซอฟต์แวร์ใน Apigee Edge คุณต้องเพิ่มผลิตภัณฑ์ API ที่คุณเพิ่งสร้างลงในแอป หากต้องการความช่วยเหลือ โปรดดูการลงทะเบียนแอปใน UI การจัดการ Edge
  7. ในเครื่องที่ติดตั้ง Edge Microgateway ให้ส่งออกตัวแปรสภาพแวดล้อมต่อไปนี้ด้วยค่า "1"
    export EDGEMICRO_LOCAL_PROXY=1
  8. ใช้คำสั่ง 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":""
}