مرجع عملکرد و پیکربندی برای Edge Microgateway

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

Edge Microgateway v. 3.2.x

این موضوع درباره نحوه مدیریت و پیکربندی Edge Microgateway بحث می‌کند.

ارتقا دادن Edge Microgateway درصورت داشتن اتصال اینترنت

این بخش نحوه ارتقا دادن نصب موجود Edge Microgateway را توضیح می‌دهد. اگر بدون اتصال اینترنت کار می‌کنید، به آیا می‌توانم Edge Microgateway را بدون اتصال اینترنت نصب کنم؟ مراجعه کنید.

‫Apigee توصیه می‌کند پیش‌از ارتقا دادن محیط تولید، پیکربندی موجودتان را با نسخه جدید آزمایش کنید.

  1. برای ارتقا به جدیدترین نسخه Edge Microgateway، فرمان npm زیر را اجرا کنید:
    npm upgrade edgemicro -g

    برای نصب نسخه خاصی از Edge Microgateway، باید شماره نسخه را در فرمان نصب مشخص کنید. برای مثال، برای نصب نسخه ۳.۲.۳، از فرمان زیر استفاده کنید:

    npm install edgemicro@3.2.3 -g
  2. شماره نسخه را بررسی کنید؛ برای مثال، اگر نسخه ۳.۲.۳ را نصب کرده‌اید:
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.2.3
        
  3. درنهایت، به جدیدترین نسخه پراکسی edgemicro-auth ارتقا دهید:
    edgemicro upgradeauth -o $ORG -e $ENV -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 -e $ENV -k $KEY -s $SECRET

    مکان:

    • ‫$ORG نام سازمان Edge شما است (باید سرپرست سازمان باشید).
    • ‫$ENV محیطی در سازمان شما است (مثل «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 -e $ENV -k $KEY -s $SECRET

    مکان:

    • ‫$ORG نام سازمان Edge شما است (باید سرپرست سازمان باشید).
    • ‫$ENV محیطی در سازمان شما است (مثل «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

تنظیم این متغیرها اختیاری است. اگر آن‌ها را تنظیم کنید، وقتی از «میانای خط فرمان» (CLI) برای پیکربندی و شروع Edge Microgateway استفاده می‌کنید، لازم نیست مقادیر آن‌ها را مشخص کنید.

درحال پیکربندی SSL در سرور Edge Microgateway

برای آشنایی با پیکربندی «امنیت لایه انتقال» در Apigee Edge Microgateway، ویدیوهای زیر را تماشا کنید:

ویدیو شرح
پیکربندی «امنیت لایه انتقال» یک‌طرفه شمالی با پیکربندی «امنیت لایه انتقال» در «درگاه خرد Apigee Edge» آشنا شوید. این ویدیو «نمای کلی» از «امنیت لایه انتقال» و اهمیت آن ارائه می‌دهد، «امنیت لایه انتقال» را در Edge Microgateway معرفی می‌کند، و نحوه پیکربندی «امنیت لایه انتقال یک‌طرفه شمالی» را نشان می‌دهد.
پیکربندی «امنیت لایه انتقال» دوطرفه شمالی این دومین ویدیو درباره پیکربندی «امنیت لایه انتقال» در Apigee Edge Microgateway است. این ویدیو نحوه پیکربندی «امنیت لایه انتقال» دوطرفه شمالی را توضیح می‌دهد.
پیکربندی «امنیت لایه انتقال» یک‌طرفه و دوطرفه در مسیر جنوب این ویدیو سوم درباره پیکربندی «امنیت لایه انتقال» در Apigee Edge Microgateway توضیح می‌دهد چگونه «امنیت لایه انتقال» یک‌طرفه و دوطرفه خروجی را پیکربندی کنید.

می‌توانید سرور Microgateway را پیکربندی کنید تا از SSL استفاده کند. برای مثال، با پیکربندی SSL، می‌توانید ازطریق Edge Microgateway با پروتکل «https» با میاناهای برنامه‌سازی کاربردی تماس بگیرید، مانند این:

https://localhost:8000/myapi

برای پیکربندی SSL در سرور Microgateway، این مراحل را دنبال کنید:

  1. بااستفاده از ابزار openssl یا هر روشی که ترجیح می‌دهید، گواهی و کلید SSL تولید یا دریافت کنید.
  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 اگر درست باشد، گواهینامه سرور دربرابر فهرست «مرکز صدور گواهی» ارائه‌شده درستی‌سنجی می‌شود. اگر درستی‌سنجی ناموفق باشد، خطایی برگردانده می‌شود.
secureProtocol روش SSL برای استفاده. برای مثال، SSLv3_method برای اجبار SSL به نسخه ۳.
servername نام سرور برای افزونه SNI (Server Name Indication) TLS.
requestCert برای SSL دوطرفه درست است؛ برای SSL یک‌طرفه نادرست است

درحال استفاده از گزینه‌های کارخواه SSL/TLS

می‌توانید Edge Microgateway را به‌گونه‌ای پیکربندی کنید که هنگام اتصال به نقاط پایانی مقصد، کارخواه «امنیت لایه انتقال» یا 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

در اینجا مثالی برای «امنیت لایه انتقال» آورده شده است:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

درصورتی‌که بخواهید تنظیمات TLS/SSL را برای چندین هدف خاص اعمال کنید، باید اولین میزبان را در پیکربندی به‌عنوان «خالی» مشخص کنید، که درخواست‌های جهانی را فعال می‌کند، و سپس میزبان‌های خاص را به هر ترتیبی مشخص کنید. در این مثال، تنظیمات برای چندین میزبان خاص اعمال می‌شود:

targets:
 - host:   ## Note that this value must be "empty"
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       passphrase: admin123
       rejectUnauthorized: true
 - host: 'myserver1.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true
 - host: 'myserver2.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true

در اینجا فهرستی از همه گزینه‌های مشتری پشتیبانی‌شده آورده شده است:

گزینه شرح
pfx مسیر فایل pfx حاوی کلید خصوصی، گواهی، و گواهی‌های CA مشتری در قالب PFX.
key مسیر فایل ca.key (در قالب PEM).
passphrase رشته‌ای که حاوی عبارت عبور برای کلید خصوصی یا PFX است.
cert مسیر فایل ca.cert (در قالب PEM).
ca مسیر فایلی که حاوی فهرستی از گواهی‌های مطمئن در قالب PEM است.
ciphers رشته‌ای که رمزهای مورد استفاده را با «:» از هم جدا می‌کند.
rejectUnauthorized اگر درست باشد، گواهینامه سرور دربرابر فهرست «مرکز صدور گواهی» ارائه‌شده درستی‌سنجی می‌شود. اگر درستی‌سنجی ناموفق باشد، خطایی برگردانده می‌شود.
secureProtocol روش SSL برای استفاده. برای مثال، SSLv3_method برای اجبار SSL به نسخه ۳.
servername نام سرور برای افزونه SNI (Server Name Indication) TLS.

سفارشی‌سازی پراکسی edgemicro-auth

به‌طور پیش‌فرض، Edge Microgateway از پراکسی مستقر در Apigee Edge برای اصالت‌سنجی OAuth2 استفاده می‌کند. این پراکسی وقتی edgemicro configure را برای اولین‌بار اجرا می‌کنید مستقر می‌شود. می‌توانید پیکربندی پیش‌فرض این پراکسی را تغییر دهید تا از ادعاهای سفارشی در «نشان وب JSON» (JWT) پشتیبانی کند، انقضای نشان را پیکربندی کند، و نشان‌های بازآوری تولید کند. برای جزئیات، صفحه edgemicro-auth را در GitHub ببینید.

استفاده از سرویس اصالت‌سنجی سفارشی

به‌طور پیش‌فرض، Edge Microgateway از پراکسی مستقر در Apigee Edge برای اصالت‌سنجی OAuth2 استفاده می‌کند. این پراکسی وقتی edgemicro configure را برای اولین‌بار اجرا می‌کنید مستقر می‌شود. به‌طور پیش‌فرض، نشانی وب این پراکسی در فایل پیکربندی 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 و هم به فایل گزارش ارسال کنید.

نحوه تنظیم سطح گزارش

سطح گزارش را برای استفاده در پیکربندی edgemicro مشخص می‌کنید. برای فهرست کامل سطوح گزارش و توضیحات آن‌ها، مشخصه‌های edgemicro را ببینید.

برای مثال، پیکربندی زیر سطح گزارش را روی debug تنظیم می‌کند:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: debug
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

نحوه تغییر دادن فاصله‌های گزارش

می‌توانید این فاصله‌ها را در فایل پیکربندی Edge Microgateway پیکربندی کنید. همچنین ایجاد تغییرات پیکربندی را ببینید.

مشخصه‌های قابل‌پیکربندی عبارت‌اند از:

  • stats_log_interval: (پیش‌فرض: ۶۰) فاصله زمانی، به ثانیه، که در آن گزارش آمار در فایل گزارش API نوشته می‌شود.
  • rotate_interval: (پیش‌فرض: ۲۴) فاصله زمانی، به ساعت، که فایل‌های گزارش چرخانده می‌شوند. برای مثال:
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

نحوه آسان کردن اجازه‌های سخت‌گیرانه فایل گزارش

به‌طور پیش‌فرض، Edge Microgateway فایل گزارش برنامه (api-log.log) را با سطح اجازه فایل روی 0600 تنظیم می‌کند. این سطح اجازه به برنامه‌ها یا کاربران خارجی اجازه نمی‌دهد فایل گزارش را بخوانند. برای کاهش سخت‌گیری این سطح اجازه، logging:disableStrictLogFile را روی true تنظیم کنید. وقتی این مشخصه true باشد، فایل گزارش با اجازه فایل تنظیم‌شده روی 0755 ایجاد می‌شود. اگر false یا اگر مشخصه ارائه نشده باشد، اجازه به‌طور پیش‌فرض روی ۰۶۰۰ تنظیم می‌شود.

در نسخه ۳.۲.۳ اضافه شده است.

برای مثال:

edgemicro:
 logging:
   disableStrictLogFile: true

روال‌های مطلوب نگهداری فایل گزارش

ازآنجایی‌که داده‌های فایل گزارش با گذشت زمان انباشته می‌شود، Apigee توصیه می‌کند که از شیوه‌های زیر پیروی کنید:

  • ازآنجایی‌که فایل‌های گزارش می‌توانند بسیار بزرگ شوند، مطمئن شوید که فهرست راهنمای فایل گزارش فضای کافی دارد. بخش‌های زیر را ببینید: فایل‌های گزارش کجا ذخیره می‌شوند و نحوه تغییر دادن فهرست راهنمای پیش‌فرض فایل گزارش.
  • فایل‌های گزارش را حداقل هفته‌ای یک‌بار حذف کنید یا به فهرست بایگانی جداگانه‌ای منتقل کنید.
  • اگر خط‌مشی شما حذف گزارش‌ها است، می‌توانید از فرمان CLI edgemicro log -c برای برداشتن (پاک کردن) گزارش‌های قدیمی‌تر استفاده کنید.

قاعده نام‌گذاری فایل گزارش

هر نمونه Edge Microgateway فایل گزارشی با پسوند .log تولید می‌کند. قرارداد نام‌گذاری برای فایل‌های گزارش به‌صورت زیر است:

edgemicro-HOST_NAME-INSTANCE_ID-api.log

برای مثال:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log

درباره محتوای فایل گزارش

اضافه‌شده در: v2.3.3

به‌طور پیش‌فرض، سرویس گزارش‌گیری JSON مربوط به کارگزاران وکالتی، محصولات، و «نشان وب» (JWT) بارگیری‌شده را حذف می‌کند. اگر می‌خواهید این اشیا را در کنسول برون‌برد کنید، هنگام شروع Edge Microgateway، پرچم خط فرمان DEBUG=* را تنظیم کنید. برای مثال:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

استفاده کنید

محتوای فایل گزارش «api»

فایل گزارش «api» حاوی اطلاعات دقیق درباره جریان درخواست‌ها و پاسخ‌ها ازطریق Edge Microgateway است. فایل‌های گزارش «api» به این صورت نام‌گذاری می‌شوند:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

برای هر درخواست ارسال‌شده به Edge Microgateway، چهار رویداد در فایل گزارش «api» ضبط می‌شود: فایل:

  • درخواست ورودی از مشتری
  • درخواست خروجی به هدف ارسال شد
  • پاسخ ورودی از هدف
  • پاسخ خروجی به کارخواه

هریک از این ورودی‌های جداگانه در یک نماد اختصاری نشان داده می‌شود تا فایل‌های گزارش فشرده‌تر شوند. در اینجا چهار ورودی نمونه آورده شده است که هریک از چهار رویداد را نشان می‌دهد. در فایل گزارش، به این شکل هستند (شماره خط‌ها فقط برای مرجع در سند هستند، در فایل گزارش ظاهر نمی‌شوند).

(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

بیایید آن‌ها را یکی‌یکی بررسی کنیم:

۱. نمونه درخواست ورودی از مشتری:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 - مُهر تاریخ یونیکس
  • info - سطح گزارش‌گیری. این مقدار به بافت تراکنش و سطح گزارش‌گیری تنظیم‌شده در پیکربندی edgemicro بستگی دارد. ببینید چگونه سطح گزارش را تنظیم کنید. برای سوابق آمار، سطح روی stats تنظیم شده است. گزارش‌های آمار در فاصله زمانی منظمی که با پیکربندی stats_log_interval تنظیم شده است گزارش می‌شود. همچنین نحوه تغییر دادن فاصله‌های گزارش را ببینید.
  • req - رویداد را شناسایی می‌کند. در این مورد، از کارخواه درخواست کنید.
  • m - فعل HTTP استفاده‌شده در درخواست.
  • u - بخشی از نشانی وب که پس‌از مسیر پایه می‌آید.
  • h - میزبان و شماره درگاهی که Edge Microgateway در آن گوش می‌دهد.
  • r - میزبان و درگاه راه دور که درخواست کارخواه از آنجا شروع شده است.
  • i - شناسه درخواست. هر چهار ورودی رویداد این شناسه را هم‌رسانی خواهند کرد. به هر درخواست یک شناسه درخواست یکتا اختصاص داده می‌شود. همبسته کردن گزارش‌های گزارش براساس شناسه درخواست می‌تواند اطلاعات آماری ارزشمندی درباره تأخیر هدف ارائه دهد.
  • d - مدت زمان برحسب میلی‌ثانیه از زمان دریافت درخواست توسط Edge Microgateway. در مثال بالا، پاسخ هدف برای درخواست ۰ پس‌از ۷ میلی‌ثانیه (خط ۳) دریافت شد و پاسخ پس‌از ۴ میلی‌ثانیه دیگر (خط ۴) به مشتری ارسال شد. به‌عبارت دیگر، تأخیر کل درخواست ۱۱ میلی‌ثانیه بود که از این مقدار، ۷ میلی‌ثانیه مربوط به هدف و ۴ میلی‌ثانیه مربوط به خود Edge Microgateway بود.

۲. نمونه درخواست خروجی که به هدف ارسال شده است:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 - مُهر تاریخ یونیکس
  • info - سطح گزارش‌گیری. این مقدار به بافت تراکنش و سطح گزارش‌گیری تنظیم‌شده در پیکربندی edgemicro بستگی دارد. ببینید چگونه سطح گزارش را تنظیم کنید. برای سوابق آمار، سطح روی stats تنظیم شده است. گزارش‌های آمار در فاصله زمانی منظمی که با پیکربندی stats_log_interval تنظیم شده است گزارش می‌شود. همچنین نحوه تغییر دادن فاصله‌های گزارش را ببینید.
  • treq - رویداد را شناسایی می‌کند. در این مورد، درخواست هدف.
  • m - فعل HTTP استفاده‌شده در درخواست هدف.
  • u - بخشی از نشانی وب که پس‌از مسیر پایه می‌آید.
  • h - میزبان و شماره درگاه هدف زیرینه.
  • i - شناسه ورودی گزارش. همه چهار ورودی رویداد این شناسه را هم‌رسانی خواهند کرد.

۳. نمونه‌ای از پاسخ ورودی از هدف

1436403888672 info tres s=200, d=7, i=0

1436403888651 - مُهر تاریخ یونیکس

  • info - سطح گزارش‌گیری. این مقدار به بافت تراکنش و سطح گزارش‌گیری تنظیم‌شده در پیکربندی edgemicro بستگی دارد. ببینید چگونه سطح گزارش را تنظیم کنید. برای سوابق آمار، سطح روی stats تنظیم شده است. گزارش‌های آمار در فاصله زمانی منظمی که با پیکربندی stats_log_interval تنظیم شده است گزارش می‌شود. همچنین نحوه تغییر دادن فاصله‌های گزارش را ببینید.
  • tres - رویداد را شناسایی می‌کند. در این مورد، پاسخ هدف.
  • s - وضعیت پاسخ HTTP.
  • d - مدت زمان به میلی‌ثانیه. زمان صرف‌شده برای فراخوانی میانای برنامه‌سازی کاربردی توسط هدف.
  • i - شناسه ورودی گزارش. همه چهار ورودی رویداد این شناسه را هم‌رسانی خواهند کرد.

۴. نمونه‌ای از پاسخ خروجی به مشتری

1436403888676 info res s=200, d=11, i=0

1436403888651 - مُهر تاریخ یونیکس

  • info - سطح گزارش‌گیری. این مقدار به بافت تراکنش و سطح گزارش‌گیری تنظیم‌شده در پیکربندی edgemicro بستگی دارد. ببینید چگونه سطح گزارش را تنظیم کنید. برای سوابق آمار، سطح روی stats تنظیم شده است. گزارش‌های آمار در فاصله زمانی منظمی که با پیکربندی stats_log_interval تنظیم شده است گزارش می‌شود. همچنین نحوه تغییر دادن فاصله‌های گزارش را ببینید.
  • res - رویداد را شناسایی می‌کند. در این مورد، به کارخواه پاسخ دهید.
  • s - وضعیت پاسخ HTTP.
  • d - مدت زمان به میلی‌ثانیه. این زمان کل صرف‌شده برای فراخوانی میانای برنامه‌سازی کاربردی است، ازجمله زمان صرف‌شده توسط میانای برنامه‌سازی کاربردی هدف و زمان صرف‌شده توسط خود «درگاه کوچک Edge».
  • i - شناسه ورودی گزارش. همه چهار ورودی رویداد این شناسه را هم‌رسانی خواهند کرد.

برنامه زمانی فایل گزارش

فایل‌های گزارش در بازه زمانی مشخص‌شده توسط rotate_interval rotate_interval چرخانده می‌شوند. ورودی‌ها تا زمانی که فاصله چرخش منقضی شود به همان فایل گزارش اضافه می‌شوند. بااین‌حال، هر بار که Edge Microgateway بازراه‌اندازی می‌شود، UID جدیدی دریافت می‌کند و مجموعه جدیدی از فایل‌های گزارش با این UID ایجاد می‌کند. همچنین روال‌های مطلوب نگهداری فایل گزارش را ببینید.

پیام‌های خطا

برخی‌از ورودی‌های گزارش حاوی پیام‌های خطا خواهند بود. برای کمک به شناسایی مکان و دلیل بروز خطاها، به مرجع خطای Edge Microgatewayمراجعه کنید.

مرجع پیکربندی Edge Microgateway

مکان فایل پیکربندی

مشخصه‌های پیکربندی که در این بخش شرح داده شده است در فایل پیکربندی Edge Microgateway قرار دارد. همچنین ایجاد تغییرات پیکربندی را ببینید.

مشخصه‌های edge_config

از این تنظیمات برای پیکربندی تعامل بین نمونه Edge Microgateway و Apigee Edge استفاده می‌شود.

  • bootstrap: (پیش‌فرض: هیچ) نشانی وبی که به سرویس ویژه Edge Microgateway که در Apigee Edge اجرا می‌شود اشاره می‌کند. ‫Edge Microgateway از این سرویس برای برقراری ارتباط با Apigee Edge استفاده می‌کند. این نشانی وب زمانی برگردانده می‌شود که فرمان تولید جفت کلید عمومی/خصوصی را اجرا کنید: edgemicro genkeys. برای جزئیات بیشتر، راه‌اندازی و پیکربندی درگاه کوچک Edge را ببینید.
  • jwt_public_key: (پیش‌فرض: هیچ) نشانی وبی که به پراکسی Edge Microgateway مستقرشده در Apigee Edge اشاره می‌کند. این پراکسی به‌عنوان نقطه پایانی اصالت‌سنجی برای صدور نمودارهای دسترسی امضاشده برای مشتریان عمل می‌کند. این نشانی وب وقتی برگردانده می‌شود که فرمان را برای استقرار پراکسی اجرا می‌کنید: edgemicro configure. برای جزئیات بیشتر، راه‌اندازی و پیکربندی «دروازه میکرو Edge» را ببینید.
  • quotaUri: اگر می‌خواهید سهمیه‌ها را ازطریق پراکسی edgemicro-auth که در سازمانتان مستقر شده است مدیریت کنید، این دارایی پیکربندی را تنظیم کنید. اگر این دارایی تنظیم نشده باشد، نقطه پایانی سهمیه به‌طور پیش‌فرض به نقطه پایانی داخلی Edge Microgateway تنظیم می‌شود.
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

مشخصه‌های edgemicro

این تنظیمات فرایند Edge Microgateway را پیکربندی می‌کند.

  • درگاه: (پیش‌فرض: ۸۰۰۰) شماره درگاهی که فرایند Edge Microgateway در آن گوش می‌دهد.
  • max_connections: (پیش‌فرض: -۱) حداکثر تعداد اتصالات ورودی هم‌زمان را که Edge Microgateway می‌تواند دریافت کند مشخص می‌کند. اگر از این تعداد فراتر بروید، وضعیت زیر برگردانده می‌شود:

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (پیش‌فرض: -۱) حداکثر تعداد درخواست‌های هم‌زمان که Edge Microgateway می‌تواند قبل‌از بستن اتصال دریافت کند. این تنظیم برای جلوگیری از حملات منع سرویس درنظر گرفته شده است. معمولاً آن را روی عددی بزرگ‌تر از max_connections تنظیم کنید.
  • گزارش‌گیری:
    • سطح: (پیش‌فرض: خطا)
      • info - (توصیه‌شده) همه درخواست‌ها و پاسخ‌هایی را که ازطریق نمونه Edge Microgateway جریان می‌یابد ثبت می‌کند.
      • warn - فقط پیام‌های هشدار را ثبت می‌کند.
      • error - فقط پیام‌های خطای گزارش‌ها را ثبت می‌کند.
      • اشکال‌زدایی - پیام‌های اشکال‌زدایی را همراه با پیام‌های اطلاعات، هشدار، و خطا ثبت می‌کند.
      • trace - اطلاعات ردیابی خطاها را همراه با اطلاعات، هشدارها، و پیام‌های خطا ثبت می‌کند.
      • هیچ‌کدام - فایل گزارش ایجاد نمی‌شود.
    • dir: (پیش‌فرض: /var/tmp) دایرکتوری که فایل‌های گزارش در آن ذخیره می‌شوند.
    • stats_log_interval: (پیش‌فرض: ۶۰) فاصله زمانی، به ثانیه، که در آن سابقه آمار در فایل گزارش api نوشته می‌شود.
    • rotate_interval: (پیش‌فرض: ۲۴) فاصله زمانی، به ساعت، که فایل‌های گزارش چرخانده می‌شوند.
  • افزایه‌ها: افزایه‌ها عملکرد را به Edge Microgateway اضافه می‌کنند. برای جزئیات درباره توسعه افزایه‌ها، به توسعه افزایه‌های سفارشی مراجعه کنید.
  • dir: مسیر نسبی از دایرکتوری ./gateway به دایرکتوری ./plugins، یا مسیر مطلق.
  • sequence: فهرستی از واحدهای افزایه برای افزودن به نمونه Edge Microgateway شما. واحدها به ترتیبی که در اینجا مشخص شده است اجرا خواهند شد.
  • اشکال‌زدایی: اشکال‌زدایی از دور را به فرایند Edge Microgateway اضافه می‌کند.
    • درگاه: شماره درگاهی که باید در آن گوش کنید. برای مثال، اشکال‌زدای IDE خود را تنظیم کنید تا در این درگاه گوش کند.
    • args: آرگومان‌های فرایند اشکال‌زدایی. برای مثال: args --nolazy
  • config_change_poll_interval: (پیش‌فرض: ۶۰۰ ثانیه) Edge Microgateway پیکربندی جدیدی را به‌صورت دوره‌ای بار می‌کند و اگر چیزی تغییر کرده باشد، بار کردن مجدد را اجرا می‌کند. نظرسنجی هر تغییری را که در Edge ایجاد شده باشد (تغییرات در محصولات، پراکسی‌های آگاه از ریزدروازه، و غیره) و همچنین تغییرات ایجادشده در فایل پیکربندی محلی را دریافت می‌کند.
  • disable_config_poll_interval: (پیش‌فرض: false) برای true تنظیم کنید تا نظرسنجی تغییر خودکار خاموش شود.
  • request_timeout: زمان اتمام درخواست‌های هدف را تنظیم می‌کند. مهلت زمانی به ثانیه تنظیم شده است. اگر زمان انتظار به‌پایان برسد، Edge Microgateway با کد وضعیت ۵۰۴ پاسخ می‌دهد. (افزوده‌شده نسخه ۲.۴.x)
  • keep_alive_timeout: این دارایی به شما امکان می‌دهد زمان اتمام Edge Microgateway را (به میلی‌ثانیه) تنظیم کنید. (پیش‌فرض: ۵ ثانیه) (به نسخه ۳.۰.۶ اضافه شد)
  • headers_timeout: این مشخصه مقدار زمانی (برحسب میلی‌ثانیه) را که تجزیه‌کننده HTTP برای دریافت سرصفحه‌های کامل HTTP منتظر می‌ماند محدود می‌کند.

    برای مثال:

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

    در داخل، این پارامتر مشخصه Server.headersTimeout را در درخواست‌ها تنظیم می‌کند. (پیش‌فرض: ۵ ثانیه بیشتر از زمان تنظیم‌شده با edgemicro.keep_alive_timeout. این تنظیم پیش‌فرض مانع از این می‌شود که ترازکننده‌های بار یا پراکسی‌ها اتصال را به‌اشتباه قطع کنند.) (اضافه‌شده در نسخه ۳.۱.۱)

  • noRuleMatchAction: (رشته) کنشی که باید درصورت عدم حل شدن قانون مطابقت مشخص‌شده در افزایه accesscontrol (عدم مطابقت) انجام شود (اجازه دادن یا رد کردن دسترسی). مقادیر معتبر: ALLOW یا DENY پیش‌فرض: ALLOW (اضافه شد: v3.1.7)
  • enableAnalytics: (پیش‌فرض: درست) برای جلوگیری از بار شدن افزایه Analytics، این مشخصه را روی نادرست تنظیم کنید. در این مورد، هیچ تماسی با تجزیه‌وتحلیل Apigee Edge برقرار نخواهد شد. اگر روی درست تنظیم شود، یا وقتی این مشخصه ارائه نشود، افزایه Analytics طبق معمول کار خواهد کرد. برای جزئیات، مشخصه‌های edgemicro را ببینید. (در نسخه ۳.۱.۸ اضافه شد).

    مثال:

    edgemicro
      enableAnalytics=false|true
  • on_target_response_abort: این مشخصه به شما امکان می‌دهد کنترل کنید اگر اتصال بین مشتری (Edge Microgateway) و سرور هدف زودتر از موعد بسته شود، Edge Microgateway چگونه عمل کند.
    مقدار شرح
    پیش‌فرض اگر on_target_response_abort مشخص نشده باشد، رفتار پیش‌فرض این است که پاسخ را بدون نمایش خطا کوتاه کند. در فایل‌های گزارش، پیام هشداری با targetResponse aborted و کد پاسخ ۵۰۲ نشان داده می‌شود.
    appendErrorToClientResponseBody خطای سفارشی TargetResponseAborted به کارخواه برگردانده می‌شود. در فایل‌های گزارش، پیام هشداری با targetResponse aborted و کد پاسخ ۵۰۲ نشان داده می‌شود. علاوه‌براین، خطای TargetResponseAborted با پیام Target response ended prematurely. ثبت می‌شود
    abortClientRequest ‫Edge Microgateway درخواست را لغو می‌کند و هشداری در فایل‌های گزارش نوشته می‌شود: TargetResponseAborted با کد وضعیت درخواست ۵۰۲.

مثال:

edgemicro:
 on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest

مشخصه‌های سرایند

این تنظیمات نحوه رفتار با برخی‌از سرایندهای HTTP را پیکربندی می‌کند.

  • x-forwarded-for: (پیش‌فرض: درست) برای جلوگیری از گذراندن سرایندهای x-forwarded-for به هدف، روی نادرست تنظیم کنید. توجه داشته باشید که اگر سرایند x-forwarded-for در درخواست وجود داشته باشد، مقدار آن روی مقدار client-ip در Edge Analytics تنظیم خواهد شد.
  • x-forwarded-host: (پیش‌فرض: درست) برای جلوگیری از گذر سرایندهای x-forwarded-host به هدف، روی نادرست تنظیم کنید.
  • x-request-id: (پیش‌فرض: true) برای جلوگیری از گذر سرصفحه‌های x-request-id به هدف، روی false تنظیم کنید.
  • x-response-time: (پیش‌فرض: درست) برای جلوگیری از گذر سرایندهای x-response-time به هدف، روی نادرست تنظیم کنید.
  • ازطریق: (پیش‌فرض: درست) برای جلوگیری از انتقال سرایندهای ازطریق به مقصد، روی نادرست تنظیم کنید.

مشخصه‌های oauth

این تنظیمات نحوه اعمال اصالت‌سنجی کارخواه توسط Edge Microgateway را پیکربندی می‌کند.

  • allowNoAuthorization: (پیش‌فرض: نادرست) اگر روی درست تنظیم شود، به فراخوانی‌های API اجازه داده می‌شود بدون هیچ‌گونه سرایند «مجوز» از Edge Microgateway عبور کنند. برای الزامی کردن سرایند «مجوز» (پیش‌فرض)، این را روی false تنظیم کنید.
  • allowInvalidAuthorization: (پیش‌فرض: نادرست) اگر روی درست تنظیم شود، فراخوانی‌های API مجاز می‌شوند اگر کد عبور ارسال‌شده در سرایند «مجوز» نامعتبر یا منقضی باشد. برای الزامی کردن کدهای معتبر (پیش‌فرض)، این را روی false تنظیم کنید.
  • authorization-header: (پیش‌فرض: Authorization: Bearer) سرایندی که برای ارسال کردن کد دسترسی به Edge Microgateway استفاده می‌شود. ممکن است بخواهید در مواردی که هدف باید از سرایند «مجوز» برای هدف دیگری استفاده کند، پیش‌فرض را تغییر دهید.
  • api-key-header: (پیش‌فرض: x-api-key) نام سرایند یا پارامتر پُرسمانی که برای انتقال کلید میانای API به Edge Microgateway استفاده می‌شود. همچنین استفاده از کلید API را ببینید.
  • keep-authorization-header: (پیش‌فرض: نادرست) اگر روی درست تنظیم شود، سرایند «مجوز» ارسال‌شده در درخواست به هدف منتقل می‌شود (حفظ می‌شود).
  • allowOAuthOnly -- اگر روی true تنظیم شود، هر API باید سرصفحه «مجوز» با «رمز دسترسی حامل» داشته باشد. به شما امکان می‌دهد فقط مدل امنیتی OAuth را مجاز کنید (ضمن اینکه سازگاری با نسخه قدیمی را حفظ می‌کنید). (افزوده‌شده در نسخه ۲.۴.x)
  • allowAPIKeyOnly -- اگر روی درست تنظیم شود، هر میانای برنامه‌سازی کاربردی باید سرصفحه x-api-key (یا مکان سفارشی) با کلید میانای برنامه‌سازی کاربردی داشته باشد.به شما امکان می‌دهد فقط مدل امنیتی کلید میانای برنامه‌سازی کاربردی را مجاز کنید (ضمن حفظ سازگاری با نسخه‌های قبلی). (اضافه‌شده در نسخه ۲.۴.x)
  • gracePeriod -- این پارامتر به جلوگیری از خطاهای ناشی از اختلاف جزئی بین ساعت سیستم شما و زمان‌های «پیش‌از» (nbf) یا «صادرشده در» (iat) مشخص‌شده در کد مجوز JWT کمک می‌کند. این پارامتر را روی تعداد ثانیه‌هایی که برای این نوع اختلاف مجاز است تنظیم کنید. (افزوده‌شده در نسخه ۲.۵.۷)

مشخصه‌های ویژه افزایه

برای جزئیات مربوط به مشخصه‌های پیکربندی‌پذیر برای هر افزایه، «استفاده از افزایه‌ها» را ببینید.

فیلتر کردن پراکسی‌ها

می‌توانید فیلتر کنید که نمونه Edge Microgateway کدام پراکسی‌های آگاه از میکروگیت‌وی را پردازش کند. وقتی Edge Microgateway شروع می‌شود، همه پراکسی‌های آگاه از میکروگیت‌وی را در سازمانی که با آن مرتبط است بارگیری می‌کند. از پیکربندی زیر برای محدود کردن پراکسی‌هایی که درگاه کوچک پردازش می‌کند استفاده کنید. برای مثال، این پیکربندی پراکسی‌هایی را که ریزدروازه پردازش می‌کند به سه مورد محدود می‌کند: edgemicro_proxy-1،‏ edgemicro_proxy-2، و edgemicro_proxy-3:

edgemicro:
  proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

فیلتر کردن محصولات براساس نام

از پیکربندی زیر برای محدود کردن تعداد محصولات API که Edge Microgateway بارگیری و پردازش می‌کند استفاده کنید. برای فیلتر کردن محصولات بارگیری‌شده، پارامتر پُرسمان productnamefilter را به /products API فهرست‌شده در فایل *.config.yaml «دروازه کوچک Edge» اضافه کنید. برای مثال:

edge_config:
  bootstrap: >-
    https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
  jwt_public_key: 'https://myorg-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://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'

توجه داشته باشید که مقدار پارامتر پُرسمان باید در قالب عبارت باقاعده مشخص شود و نشانی وب آن کدگذاری شود. برای مثال، عبارت باقاعده ^[Ee]dgemicro.*$ نام‌هایی مثل: «edgemicro-test-1» ، «edgemicro_demo» و «Edgemicro_New_Demo» را می‌گیرد. مقدار کدبندی‌شده نشانی وب، مناسب برای استفاده در پارامتر پُرسمان، این است: %5E%5BEe%5Ddgemicro.%2A%24.

برونداد اشکال‌زدایی زیر نشان می‌دهد که فقط محصولات فیلترشده بارگیری شده‌اند:

...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
   "apiProduct":[
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590549037549,
         "createdBy":"k***@g********m",
         "displayName":"test upper case in name",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590549037549,
         "lastModifiedBy":"k***@g********m",
         "name":"Edgemicro_New_Demo",
         "proxies":[
            "catchall"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590548328998,
         "createdBy":"k***@g********m",
         "displayName":"edgemicro test 1",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590548328998,
         "lastModifiedBy":"k***@g********m",
         "name":"edgemicro-test-1",
         "proxies":[
            "Lets-Encrypt-Validation-DoNotDelete"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1558182193472,
         "createdBy":"m*********@g********m",
         "displayName":"Edge microgateway demo product",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1569077897465,
         "lastModifiedBy":"m*********@g********m",
         "name":"edgemicro_demo",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_hello"
         ],
         "quota":"600",
         "quotaInterval":"1",
         "quotaTimeUnit":"minute",
         "scopes":[

         ]
      }
   ]
}

فیلتر کردن محصولات براساس مشخصه‌های سفارشی

برای فیلتر کردن محصولات براساس مشخصه‌های سفارشی:

  1. در «میانای کاربری Edge»، کارگزار edgemicro_auth را در سازمان/محیطی که در آن Edge Microgateway را پیکربندی کرده‌اید انتخاب کنید.
  2. در تک‌ضرب «توسعه»، خط‌مشی JavaCallout را در ویرایشگر باز کنید.
  3. مشخصه سفارشی با کلید products.filter.attributes با فهرست نام‌های مشخصه جداشده با کاما اضافه کنید. فقط محصولاتی که حاوی هریک از نام‌های مشخصه سفارشی باشند به Edge Microgateway برگردانده خواهند شد.
  4. می‌توانید به‌صورت اختیاری این بررسی را غیرفعال کنید تا ببینید محصول با تنظیم کردن ویژگی سفارشی products.filter.env.enable روی false برای محیط کنونی فعال است یا نه. (پیش‌فرض درست است.)
  5. (فقط «ابر خصوصی») اگر از Edge for Private Cloud استفاده می‌کنید، دارایی org.noncps را روی true تنظیم کنید تا محصولات را برای محیط‌های غیر CPS بکشید.
  6. برای مثال:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
        <DisplayName>JavaCallout</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="products.filter.attributes">attrib.one, attrib.two</Property>
            <Property name="products.filter.env.enable">false</Property>
            <Property name="org.noncps">true</Property>
        </Properties>
        <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
        <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
    </JavaCallout>

فیلتر کردن محصولات براساس وضعیت ابطال

محصولات API سه کد وضعیت دارند - معلقه، تأییدشده، و باطل‌شده. دارایی جدیدی به‌نام allowProductStatus به خط‌مشی «تنظیم متغیرهای JWT» در پراکسی edgemicro-auth اضافه شده است. برای استفاده از این دارایی برای فیلتر کردن محصولات API فهرست‌شده در JWT:

  1. کارگزار پراکسی edgemicro-auth را در ویرایشگر پراکسی Apigee باز کنید.
  2. دارایی allowProductStatus را به XML خط‌مشی SetJWTVariables اضافه کنید و فهرست جداشده با کامایی از کدهای وضعیت را برای فیلتر کردن مشخص کنید. برای مثال، برای فیلتر کردن براساس وضعیت معلقه و لغوشده:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript timeLimit="20000" async="false" continueOnError="false"
        enabled="true" name="Set-JWT-Variables">
        <DisplayName>Set JWT Variables</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="allowProductStatus">Pending,Revoked</Property>
        </Properties>
        <ResourceURL>jsc://set-jwt-variables.js</ResourceURL>
    </Javascript>

    اگر می‌خواهید فقط محصولات تأییدشده فهرست شوند، دارایی را به‌صورت زیر تنظیم کنید:

    <Property name="allowProductStatus">Approved</Property>
  3. کارگزار پراکسی را ذخیره کنید.

    اگر برچسب دارایی وجود نداشته باشد، محصولات با همه کدهای وضعیت در JWT فهرست خواهند شد.

    برای استفاده از این دارایی جدید، باید کارگزار پراکسی edgemicro-auth را ارتقا دهید.

درحال پیکربندی بسامد ارسال Analytics

از این پارامترهای پیکربندی برای کنترل کردن دفعاتی که Edge Microgateway داده‌های تجزیه‌وتحلیل را به Apigee ارسال می‌کند استفاده کنید:

  • bufferSize (اختیاری): حداکثر تعداد گزارش‌های تجزیه‌وتحلیل که میان‌گیر می‌تواند قبل‌از شروع حذف قدیمی‌ترین گزارش‌ها نگه دارد. پیش‌فرض: ۱۰٬۰۰۰
  • batchSize (اختیاری): حداکثر اندازه دسته‌ای از گزارش‌های Analytics که به Apigee ارسال می‌شود. پیش‌فرض: ۵۰۰
  • flushInterval (اختیاری): تعداد میلی‌ثانیه بین هر تخلیه دسته‌ای از گزارش‌های تجزیه‌وتحلیل که به Apigee ارسال می‌شود. پیش‌فرض: ۵۰۰۰

برای مثال:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

پوشاندن داده‌های Analytics

پیکربندی زیر از نمایش اطلاعات مسیر درخواست در تجزیه‌وتحلیل Edge جلوگیری می‌کند. برای پوشاندن نشانی وب درخواست و/یا مسیر درخواست، موارد زیر را به پیکربندی ریزدروازه اضافه کنید. توجه داشته باشید که «نشانی وب» از بخش‌های نام میزبان و مسیر درخواست تشکیل شده است.

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

تفکیک کردن فراخوانی‌های میانای برنامه‌سازی کاربردی در Edge Analytics

می‌توانید افزایه تجزیه‌وتحلیل را پیکربندی کنید تا مسیر API خاصی را تفکیک کند تا به‌عنوان کارگزار جداگانه‌ای در داشبوردهای «تجزیه‌وتحلیل لبه» نشان داده شود. برای مثال، می‌توانید میانای برنامه‌نویسی کاربردی بررسی وضعیت را در داشبورد تفکیک کنید تا با فراخوانی‌های واقعی میانای برنامه‌نویسی کاربردی پراکسی اشتباه گرفته نشود. در داشبورد Analytics، کارگزاران تفکیک‌شده از این الگوی نام‌گذاری پیروی می‌کنند:

edgemicro_proxyname-health

تصویر زیر دو پراکسی مجزا را در داشبورد Analytics نشان می‌دهد: edgemicro_hello-health و edgemicro_mock-health:

از این پارامترها برای تفکیک مسیرهای نسبی و مطلق در داشبورد Analytics به‌عنوان پراکسی‌های جداگانه استفاده کنید:

  • relativePath (اختیاری): مسیر نسبی را برای تفکیک در داشبورد Analytics مشخص می‌کند. برای مثال، اگر /healthcheck را مشخص کنید، همه فراخوانی‌های API که حاوی مسیر /healthcheck هستند در داشبورد به‌صورت edgemicro_proxyname-health نشان داده می‌شوند. توجه داشته باشید که این پرچم مسیر پایه پراکسی را نادیده می‌گیرد. برای تفکیک براساس مسیر کامل، ازجمله مسیر پایه، از پرچم proxyPath استفاده کنید.
  • proxyPath (اختیاری): مسیر کامل پراکسی API را، ازجمله مسیر پایه پراکسی، برای تفکیک در داشبورد تجزیه‌وتحلیل مشخص می‌کند. برای مثال، اگر /mocktarget/healthcheck را مشخص کنید، که در آن /mocktarget مسیر پایه پراکسی است، همه فراخوانی‌های API با مسیر /mocktarget/healthcheck در داشبورد به‌صورت edgemicro_proxyname-health نشان داده می‌شود.

برای مثال، در پیکربندی زیر، هر مسیر API که حاوی /healthcheck باشد توسط افزایه تجزیه‌وتحلیل تفکیک خواهد شد. این یعنی /foo/healthcheck و /foo/bar/healthcheck در داشبورد Analytics به‌عنوان پراکسی جداگانه‌ای به‌نام edgemicro_proxyname-health تفکیک خواهند شد.

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 در پشت دیوار آتش شرکت

استفاده از پراکسی HTTP برای ارتباط با Apigee Edge

در نسخه ۳.۱.۲ اضافه شده است.

برای استفاده از پراکسی HTTP برای ارتباط بین Edge Microgateway و Apigee Edge، کارهای زیر را انجام دهید:

  1. متغیرهای محیطی HTTP_PROXY،‏ HTTPS_PROXY، و NO_PROXY را تنظیم کنید. این متغیرها میزبان‌های هر پراکسی HTTP را که می‌خواهید برای ارتباط با Apigee Edge استفاده کنید کنترل می‌کنند، یا میزبان‌هایی را که نباید ارتباط با Apigee Edge را مدیریت کنند کنترل می‌کنند. برای مثال:
    export HTTP_PROXY='http://localhost:3786'
    export HTTPS_PROXY='https://localhost:3786'
    export NO_PROXY='localhost,localhost:8080'

    توجه داشته باشید که NO_PROXY می‌تواند فهرست دامنه‌های جداشده با کاما باشد که Edge Microgateway نباید برای آن‌ها پراکسی کند.

    برای اطلاعات بیشتر درباره این متغیرها، https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables را ببینید

  2. ‫Edge Microgateway را بازراه‌اندازی کنید.

استفاده از پراکسی HTTP برای ارتباط با هدف

در نسخه ۳.۱.۲ اضافه شده است.

برای استفاده از پراکسی HTTP برای ارتباط بین Edge Microgateway و هدف‌های زیرینه، کارهای زیر را انجام دهید:

  1. پیکربندی زیر را به فایل پیکربندی ریزدروازه اضافه کنید:
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    مکان:

    • تونل: (اختیاری) وقتی درست باشد، Edge Microgateway از روش HTTP CONNECT برای تونل‌سازی درخواست‌های HTTP در یک اتصال TCP استفاده می‌کند. (اگر متغیرهای محیطی، همان‌طور که در زیر ذکر شده است، برای پیکربندی پراکسی TLS فعال باشند، همین امر صادق است). پیش‌فرض: false
    • url: نشانی وب پراکسی HTTP.
    • گذر: (اختیاری) یک یا چند نشانی وب میزبان مقصد را که با کاما از هم جدا شده‌اند مشخص می‌کند که باید از پراکسی HTTP عبور کنند. اگر این دارایی تنظیم نشده باشد، از متغیر محیطی NO_PROXY برای مشخص کردن نشانی‌های وب هدفی که باید از آن‌ها عبور شود استفاده کنید.
    • فعال: اگر درست باشد و proxy.url تنظیم شده باشد، از مقدار proxy.url برای پراکسی HTTP استفاده کنید. اگر درست باشد و proxy.url تنظیم نشده باشد، از پراکسی‌های مشخص‌شده در متغیرهای محیطی پراکسی HTTP HTTP_PROXY و HTTPS_PROXY استفاده کنید، همان‌طور که در استفاده از پراکسی HTTP برای ارتباط با Apigee Edge توضیح داده شده است.

    برای مثال:

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. ‫Edge Microgateway را بازراه‌اندازی کنید.

استفاده از کارت‌های جوکر در پراکسی‌های Microgateway-aware

می‌توانید از یک یا چند نویسه عام «*» در مسیر پایه یک پراکسی edgemicro_* (Microgateway-aware) استفاده کنید. برای مثال، مسیر پایه /team/*/members به مشتریان اجازه می‌دهد https://[host]/team/blue/members و https://[host]/team/green/members را بدون نیاز به ایجاد پراکسی‌های جدید میانای برنامه‌سازی کاربردی برای پشتیبانی از تیم‌های جدید فراخوانی کنند. توجه داشته باشید که /**/ پشتیبانی نمی‌شود.

مهم: Apigee از استفاده از نویسه عام «*» به‌عنوان اولین عنصر مسیر پایه پشتیبانی نمی‌کند. برای مثال، این مورد پشتیبانی نمی‌شود: جستجوی /*/.

کلیدهای JWT چرخشی

در زمانی پس‌از تولید اولیه JWT، ممکن است لازم باشد جفت کلید عمومی/خصوصی ذخیره‌شده در KVM رمزگذاری‌شده Edge را تغییر دهید. این فرایند تولید جفت کلید جدید به‌نام چرخش کلید شناخته می‌شود.

نحوه استفاده Edge Microgateway از JWT

«کد وب JSON» (JWT) یک استاندارد کد است که در RFC7519 شرح داده شده است. ‫JWT روشی برای امضای مجموعه‌ای از ادعاها ارائه می‌دهد که گیرنده JWT می‌تواند آن‌ها را به‌طور قابل‌اعتمادی درستی‌سنجی کند.

می‌توانید بااستفاده از CLI، یک JWT تولید کنید و به‌جای کلید API، از آن در سرصفحه «مجوز» تماس‌های API استفاده کنید. برای مثال:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

برای کسب اطلاعات درباره تولید JWT با CLI، به تولید کد مراجعه کنید.

گردش کلید چیست؟

در زمانی پس‌از تولید اولیه JWT، ممکن است لازم باشد جفت کلید عمومی/خصوصی ذخیره‌شده در KVM رمزگذاری‌شده Edge را تغییر دهید. این فرایند تولید جفت کلید جدید «گردش کلید» نامیده می‌شود. وقتی کلیدها را می‌چرخانید، جفت کلید خصوصی/عمومی جدیدی تولید می‌شود و در KVM «درگاه کوچک» در سازمان/محیط Apigee Edge شما ذخیره می‌شود. علاوه‌براین، کلید عمومی قدیمی همراه با مقدار شناسه کلید اصلی آن حفظ می‌شود.

برای تولید JWT،‏ Edge از اطلاعات ذخیره‌شده در KVM رمزگذاری‌شده استفاده می‌کند. A وقتی Edge Microgateway را در ابتدا راه‌اندازی (پیکربندی) کردید، KVM به‌نام microgateway ایجاد شد و با کلیدها تکمیل شد. از کلیدهای موجود در KVM برای امضا و رمزگذاری JWT استفاده می‌شود.

کلیدهای KVM شامل موارد زیر است:

  • private_key - جدیدترین (اخیراً ایجادشده‌ترین) کلید خصوصی RSA که برای امضای «وب‌توکن‌های JSON» استفاده می‌شود.

  • public_key - جدیدترین گواهی (که اخیراً ایجاد شده است) که برای درستی‌سنجی JWTهای امضاشده با private_key استفاده می‌شود.

  • private_key_kid - شناسه آخرین کلید خصوصی (جدیدترین کلید خصوصی ایجادشده). این شناسه کلید با مقدار private_key مرتبط است و برای پشتیبانی از چرخش کلید استفاده می‌شود.

  • public_key1_kid - جدیدترین (اخیراً ایجادشده) شناسه کلید عمومی. این کلید با مقدار public_key1 مرتبط است و برای پشتیبانی از چرخش کلید استفاده می‌شود. این مقدار با kid کلید خصوصی یکسان است.

  • public_key1 - جدیدترین کلید عمومی (که اخیراً ایجاد شده است).

وقتی چرخش کلید را انجام می‌دهید، مقادیر کلید موجود در نقشه جایگزین می‌شوند و کلیدهای جدیدی اضافه می‌شوند تا کلیدهای عمومی قدیمی حفظ شوند. برای مثال:

  • public_key2_kid - شناسه کلید عمومی قدیمی. این کلید با مقدار public_key2 مرتبط است و برای پشتیبانی از چرخش کلید استفاده می‌شود.

  • public_key2 - کلید عمومی قدیمی.

‫JWTهای ارائه‌شده برای درستی‌سنجی بااستفاده از کلید عمومی جدید درستی‌سنجی خواهند شد. اگر درستی‌سنجی ناموفق باشد، تا زمانی که JWT منقضی شود (پس‌از بازه token_expiry*، پیش‌فرض ۳۰ دقیقه)، از کلید عمومی قدیمی استفاده خواهد شد. به‌این‌ترتیب، می‌توانید کلیدها را «گردش» دهید بدون اینکه ترافیک API بلافاصله مختل شود.

نحوه انجام چرخش کلید

این بخش نحوه انجام چرخش کلید را توضیح می‌دهد.

  1. برای ارتقا دادن KVM، از فرمان edgemicro upgradekvm استفاده کنید. برای جزئیات درباره اجرای این فرمان، به ارتقا دادن KVM مراجعه کنید. فقط یک‌بار باید این مرحله را انجام دهید.
  2. برای ارتقا دادن پراکسی edgemicro-oauth، از فرمان edgemicro upgradeauth استفاده کنید. برای جزئیات اجرای این فرمان، ارتقا دادن پراکسی edgemicro-auth را ببینید. فقط یک‌بار باید این مرحله را انجام دهید.
  3. خط زیر را به فایل ~/.edgemicro/org-env-config.yaml اضافه کنید، جایی که باید همان سازمان و محیطی را که ریزدروازه را برای استفاده از آن پیکربندی کرده‌اید مشخص کنید:
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. برای چرخاندن کلیدها، فرمان چرخش کلید را اجرا کنید. برای جزئیات این فرمان، کلیدهای چرخشی را ببینید.

    edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET

    برای مثال:

    edgemicro rotatekey -o docs -e test \
    -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
    -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

پس‌از چرخش کلید، Edge چندین کلید را به Edge Microgateway برمی‌گرداند. توجه داشته باشید که در مثال زیر، هر کلید مقدار «kid» (شناسه کلید) یکتایی دارد. سپس ریزدروازه از این کلیدها برای اعتبارسنجی نشان‌های مجوز استفاده می‌کند. اگر اعتبارسنجی کد تأیید ناموفق باشد، ریزدروازه بررسی می‌کند آیا کلید قدیمی‌تری در مجموعه کلید وجود دارد و آن کلید را امتحان می‌کند. قالب کلیدهای برگشتی «کلید وب JSON» (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"
    }
  ]
}

پیکربندی تأخیر «نه قبل‌از»

برای نسخه‌های ۳.۱.۵ و قبل‌از آن، کلید خصوصی جدید تولیدشده توسط فرمان rotatekey بلافاصله اعمال می‌شد و نشان‌های جدید تولیدشده با کلید خصوصی جدید امضا می‌شد. بااین‌حال، کلید عمومی جدید فقط هر ۱۰ دقیقه (به‌طور پیش‌فرض) وقتی پیکربندی دروازه کوچک بازآوری می‌شد برای نمونه‌های Edge Microgateway دردسترس قرار می‌گرفت. به‌دلیل این تأخیر بین امضای رمز و بازآوری نمونه ریزدروازه، رمزهای امضاشده با جدیدترین کلید تا زمانی‌که همه نمونه‌ها جدیدترین کلید عمومی را دریافت کنند رد می‌شوند.

در مواردی که چندین نمونه ریزدروازه وجود دارد، گاهی اوقات تأخیر کلید عمومی منجر به خطاهای زمان اجرای متناوب با وضعیت ۴۰۳ می‌شد، زیرا اعتبارسنجی رمز در یک نمونه موفق بود، اما در نمونه دیگر تا زمانی که همه نمونه‌ها بازآوری شوند، ناموفق بود.

از نسخه ۳.۱.۶، پرچم جدیدی در فرمان rotatekey به شما امکان می‌دهد تأخیری را برای فعال شدن کلید خصوصی جدید مشخص کنید، که به همه نمونه‌های دروازه کوچک زمان می‌دهد تا بازآوری شوند و کلید عمومی جدید را دریافت کنند. پرچم جدید --nbf است که مخفف «نه قبل‌از» است. این پرچم مقدار عدد صحیح، تعداد دقایق تأخیر، را می‌گیرد.

در مثال زیر، تأخیر روی ۱۵ دقیقه تنظیم شده است:

edgemicro rotatekey -o docs -e test \
-k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
-s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \
--nbf 15

توجه داشته باشید که روال خوب این است که تأخیر را بیشتر از تنظیم پیکربندی config_change_poll_internal تنظیم کنید، که به‌طور پیش‌فرض ۱۰ دقیقه است. همچنین مشخصه‌های edgemicro را ببینید.

فیلتر کردن پراکسی‌های بارگیری‌شده

به‌طور پیش‌فرض، Edge Microgateway همه پراکسی‌های موجود در سازمان Edge شما را که با پیشوند نام‌گذاری «edgemicro_» شروع می‌شوند بارگیری می‌کند. می‌توانید این پیش‌فرض را تغییر دهید تا پراکسی‌هایی بارگیری شوند که نامشان با الگویی مطابقت داشته باشد.

  1. فایل پیکربندی Edge Micro را باز کنید: ~/.edgemicro/org-env-config.yaml
  2. عنصر proxyPattern را در زیر edge_config اضافه کنید. برای مثال، الگوی زیر کارگزارانی مثل edgemicro_foo،‏ edgemicro_fast، و edgemicro_first را بارگیری می‌کند.
    edge_config:
    …
    proxyPattern: edgemicro_f*

مشخص کردن محصولات بدون پراکسی‌های میانای برنامه‌سازی کاربردی

در Apigee Edge، می‌توانید محصول میانای برنامه‌سازی کاربردی ایجاد کنید که هیچ پراکسی میانای برنامه‌سازی کاربردی نداشته باشد. این پیکربندی محصول به کلید میانای برنامه‌سازی کاربردی مرتبط با آن محصول اجازه می‌دهد با هر کارگزار مستقر در سازمانتان کار کند. از نسخه ۲.۵.۴، Edge Microgateway از این پیکربندی محصول پشتیبانی می‌کند.

اشکال‌زدایی و عیب‌یابی

درحال اتصال به اشکال‌زدا

می‌توانید Edge Microgateway را با اشکال‌زدایی مثل node-inspector اجرا کنید. این برای عیب‌یابی و اشکال‌زدایی افزایه‌های سفارشی مفید است.

  1. «دروازه کوچک Edge» را در حالت اشکال‌زدایی بازراه‌اندازی کنید. برای انجام این کار، DEBUG=* را به ابتدای فرمان start اضافه کنید:
    DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
    استفاده کنید

    برای هدایت برونداد اشکال‌زدایی به فایل، می‌توانید از این فرمان استفاده کنید:

    export DEBUG=* nohup edgemicro start \
    -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log

  2. اشکال‌زدای خود را شروع کنید و آن را روی شماره درگاه برای فرایند اشکال‌زدایی تنظیم کنید.
  3. اکنون می‌توانید کد Edge Microgateway را گام‌به‌گام اجرا کنید، نقاط توقف تنظیم کنید، عبارات را تماشا کنید، و غیره.

می‌توانید پرچم‌های استاندارد Node.js مربوط به حالت اشکال‌زدایی را مشخص کنید. برای مثال، ‫--nolazy به اشکال‌زدایی کد ناهمگام کمک می‌کند.

درحال بررسی فایل‌های گزارش

اگر با مشکل مواجه شدید، حتماً فایل‌های گزارش را برای جزئیات اجرا و اطلاعات خطا بررسی کنید. برای جزئیات بیشتر، به مدیریت فایل‌های گزارش مراجعه کنید.

استفاده از امنیت کلید API

کلیدهای API سازوکار ساده‌ای برای اصالت‌سنجی کارخواهانی که برای Edge Microgateway درخواست می‌کنند ارائه می‌دهند. می‌توانید با کپی کردن مقدار «کلید مصرف‌کننده» (که «شناسه کارخواه» نیز نامیده می‌شود) از محصول Apigee Edge که شامل پراکسی اصالت‌سنجی Edge Microgateway است، کلید میانای برنامه‌سازی کاربردی دریافت کنید.

ذخیره کلیدها در حافظه نهان

کلیدهای API با کدهای حامل مبادله می‌شوند که در حافظه نهان ذخیره می‌شوند. می‌توانید با تنظیم سرایند Cache-Control: no-cache در درخواست‌های ورودی به Edge Microgateway، حافظه نهان را غیرفعال کنید.

استفاده از کلید میانای برنامه‌سازی کاربردی

می‌توانید کلید API را در درخواست API هم به‌عنوان پارامتر پُرسمان و هم در سرایند ارسال کنید. به‌طور پیش‌فرض، نام سرایند و پارامتر پُرسمان هر دو x-api-key هستند.

مثال پارامتر پُرسمان:

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

نمونه سرایند:

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

درحال پیکربندی نام کلید میانای برنامه‌سازی کاربردی

به‌طور پیش‌فرض، x-api-key نامی است که هم برای سرایند کلید API و هم برای پارامتر پُرسمان استفاده می‌شود. می‌توانید این پیش‌فرض را در فایل پیکربندی تغییر دهید، همان‌طور که در ایجاد تغییرات پیکربندی توضیح داده شده است. برای مثال، برای تغییر نام به apiKey:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

در این مثال، هم نام پارامتر پُرسمان و هم نام سرایند به apiKey تغییر می‌کند. نام x-api-key دیگر در هیچ‌کدام از این موارد کار نخواهد کرد. همچنین ببینید ایجاد تغییرات پیکربندی.

برای مثال:

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

برای اطلاعات بیشتر درباره استفاده از کلیدهای API با درخواست‌های پراکسی، به Secure Edge Microgateway مراجعه کنید.

فعال کردن کدهای پاسخ بالادستی

به‌طور پیش‌فرض، افزایه oauth فقط کدهای وضعیت خطای 4xx را برمی‌گرداند اگر پاسخ وضعیت 200 نداشته باشد. می‌توانید این رفتار را تغییر دهید تا همیشه بسته به خطا، کد دقیق 4xx یا 5xx را برگرداند.

برای فعال کردن این ویژگی، دارایی oauth.useUpstreamResponse: true را به پیکربندی Edge Microgateway اضافه کنید. برای مثال:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

استفاده از امنیت کد OAuth2

این بخش نحوه دریافت کدهای دسترسی OAuth2 و کدهای بازآوری را توضیح می‌دهد. از نشان‌های دسترسی برای ایجاد تماس‌های API ایمن ازطریق ریزدروازه استفاده می‌شود. از کدهای بازآوری برای دریافت کدهای دسترسی جدید استفاده می‌شود.

نحوه دریافت کد دسترسی

این بخش توضیح می‌دهد که چگونه از پراکسی edgemicro-auth برای دریافت کد دسترسی استفاده کنید.

همچنین می‌توانید بااستفاده از فرمان edgemicro token CLI یک کد دسترسی دریافت کنید. برای جزئیات مربوط به CLI، به مدیریت نشان‌ها مراجعه کنید.

میانای برنامه‌سازی کاربردی ۱: ارسال اطلاعات اعتباری به‌عنوان پارامترهای بدنه

نام‌های سازمان و محیط خود را در نشانی وب جایگزین کنید، و مقادیر «شناسه مصرف‌کننده» و «رمز مصرف‌کننده» را که از برنامه توسعه‌دهنده در 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"

میانای برنامه‌سازی کاربردی ۲: ارسال اطلاعات اعتباری در سرایند «احراز هویت پایه»

اعتبارنامه کارخواه را به‌عنوان سرصفحه «اصالت‌سنجی پایه» و 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 تفاوتی وجود ندارد. می‌توانید از هرکدام استفاده کنید. توجه داشته باشید که expires_in یک مقدار صحیح است که برحسب ثانیه مشخص می‌شود.
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": 1799
}

نحوه دریافت کردن کد بازآوری

برای دریافت کردن کد بازآوری، با نقطه پایانی /token کارگزار edgemicro-auth تماس API برقرار کنید. باید این فراخوانی 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"
    }'

    «میانای برنامه‌سازی کاربردی» کد دسترسی و کد بازآوری برمی‌گرداند. پاسخ شبیه به این است. توجه داشته باشید که expires_in مقادیر صحیح را می‌پذیرد و برحسب ثانیه مشخص می‌شود.

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": 108,
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": 431,
        "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"
    }'

    میانای برنامه‌سازی کاربردی کد دسترسی جدیدی برمی‌گرداند. پاسخ شبیه به این است:

    {
        "token": "your-new-access-token"
        }

پایش همیشگی

Forever ابزاری برای Node.js است که درصورتی‌که فرایند ازکار بیفتد یا خطایی داشته باشد، برنامه Node.js را به‌طور خودکار بازراه‌اندازی می‌کند. ‫Edge «دروازه کوچک» فایل forever.json دارد که می‌توانید آن را پیکربندی کنید تا کنترل کنید «دروازه کوچک Edge» چند بار و با چه فاصله‌های زمانی باید بازراه‌اندازی شود. این فایل سرویس «همیشگی» به‌نام forever-monitor را پیکربندی می‌کند که Forever را به‌صورت برنامه‌ریزی‌شده مدیریت می‌کند.

فایل forever.json را می‌توانید در دایرکتوری نصب ریشه Edge Microgateway پیدا کنید. ببینید Edge Microgateway کجا نصب شده است. برای جزئیات مربوط به گزینه‌های پیکربندی، به مستندات forever-monitor مراجعه کنید.

فرمان edgemicro forever شامل پرچم‌هایی است که به شما امکان می‌دهد مکان فایل forever.json (پرچم -f) را مشخص کنید و فرایند پایش «همیشگی» (پرچم -a) را شروع/متوقف کنید. برای مثال:

edgemicro forever -f ~/mydir/forever.json -a start

برای اطلاعات بیشتر، پایش همیشگی را در مرجع «میانای خط فرمان» ببینید.

مشخص کردن نقطه پایانی فایل پیکربندی

اگر چندین نمونه 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 که «درگاه میکرو لبه‌ای» استفاده می‌کند استفاده کنید.

اتصال‌های 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 را به‌طور کامل بدون هیچ‌گونه وابستگی به Apigee Edge اجرا کنید. این سناریو که حالت مستقل نامیده می‌شود، به شما امکان می‌دهد Edge Microgateway را بدون اتصال به اینترنت اجرا و آزمایش کنید.

در حالت مستقل، ویژگی‌های زیر کار نمی‌کنند، زیرا به اتصال به Apigee Edge نیاز دارند:

  • ‫OAuth و کلید میانای برنامه‌سازی کاربردی
  • سهمیه
  • Analytics

ازطرف دیگر، افزایه‌های سفارشی و مهار جهش به‌طور عادی کار می‌کنند، زیرا به اتصال به Apigee Edge نیاز ندارند. علاوه‌براین، افزایه جدیدی به‌نام extauth به شما امکان می‌دهد فراخوانی‌های API را به ریزدروازه با JWT در حالت مستقل مجاز کنید.

درحال پیکربندی و شروع دروازه

برای اجرای Edge Microgateway در حالت مستقل:

  1. فایل پیکربندی را با نام زیر ایجاد کنید: $HOME/.edgemicro/$ORG-$ENV-config.yaml

    برای مثال:

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. کد زیر را در فایل جای‌گذاری کنید:
    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
  3. متغیر محیط زیر را با مقدار «۱» صادر کنید:
    export EDGEMICRO_LOCAL=1
  4. فرمان start زیر را اجرا کنید، که در آن مقادیر را برای نمونه‌سازی پراکسی محلی ارائه می‌کنید:
    edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \
      -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH

    مکان:

    • ‫$ORG نام «سازمان» است که در نام فایل پیکربندی استفاده کرده‌اید.
    • ‫$ENV نام «env» است که در فایل پیکربندی نام استفاده کرده‌اید.
    • ‫$LOCAL_PROXY_NAME نام پراکسی محلی است که ایجاد خواهد شد. می‌توانید از هر نامی که می‌خواهید استفاده کنید.
    • ‫$LOCAL_PROXY_VERSION شماره نسخه پراکسی است.
    • ‫$TARGET_URL نشانی وب هدف پراکسی است. (هدف سرویسی است که کارگزار آن را فراخوانی می‌کند.)
    • ‫$BASE_PATH مسیر پایه پراکسی است. این مقدار باید با خط مورب شروع شود. برای مسیر پایه ریشه، فقط یک خط مورب به جلو مشخص کنید؛ برای مثال، «/».

    برای مثال:

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. پیکربندی را آزمایش کنید.
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    چون افزایه extauth در فایل foo-bar-config.yaml است، خطای «missing_authorization» (مجوز وجود ندارد) دریافت می‌کنید. این افزایه «وب‌رمز جاوا» را که باید در سرصفحه «مجوز» فراخوانی میانای برنامه‌سازی کاربردی وجود داشته باشد اعتبارسنجی می‌کند. در بخش بعدی، یک JWT دریافت خواهید کرد که به تماس‌های API اجازه می‌دهد بدون خطا انجام شوند.

مثال: دریافت نمودار اصالت‌سنجی

مثال زیر نحوه دریافت JWT از نقطه پایانی JWT در Edge Microgateway در Apigee Edge (edgemicro-auth/jwkPublicKeys) را نشان می‌دهد. این نقطه پایانی زمانی مستقر می‌شود که راه‌اندازی و پیکربندی استاندارد Edge Microgateway را انجام دهید. برای دریافت JWT از نقطه پایانی Apigee، ابتدا باید راه‌اندازی استاندارد Edge Microgateway را انجام دهید و به اینترنت متصل باشید. نقطه پایان Apigee در اینجا فقط برای اهداف نمونه استفاده می‌شود و الزامی نیست. درصورت تمایل می‌توانید از نقطه پایانی دیگری برای نشان JWT استفاده کنید. اگر این کار را انجام دهید، باید بااستفاده از میانای برنامه‌سازی کاربردی ارائه‌شده برای آن نقطه پایان، JWT را دریافت کنید.

مراحل زیر نحوه دریافت کد بااستفاده از نقطه پایانی edgemicro-auth/jwkPublicKeys را توضیح می‌دهد:.

  1. برای استقرار پراکسی edgemicro-auth در سازمان/محیط خود در Apigee Edge، باید راه‌اندازی و پیکربندی استاندارد Edge Microgateway را انجام دهید. اگر این مرحله را قبلاً انجام داده‌اید، نیازی به تکرار آن نیست.
  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» را همان‌طور که قبلاً انجام می‌دادید بازراه‌اندازی کنید، بااستفاده از نام‌های سازمان/محیطی که در نام فایل پیکربندی استفاده کرده‌اید. برای مثال:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. از نقطه پایان مجوز، ژتون JWT دریافت کنید. چون از نقطه پایانی edgemicro-auth/jwkPublicKeys استفاده می‌کنید، می‌توانید از این فرمان CLI استفاده کنید:

می‌توانید بااستفاده از دستور edgemicro token یا میانای برنامه‌سازی کاربردی، برای Edge Microgateway یک JWT تولید کنید. برای مثال:

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

مکان:

  • ‫your_org نام سازمان Apigee شما است که قبلاً «دروازه خرد Edge» را برای آن پیکربندی کرده‌اید.
  • ‫your_env محیطی در سازمان است.
  • گزینه i «کلید مصرف‌کننده» را از برنامه توسعه‌دهنده‌ای که محصولی دارد که شامل پراکسی edgemicro-auth است مشخص می‌کند.
  • گزینه s «رمز مصرف‌کننده» را از برنامه توسعه‌دهنده‌ای که محصولی دارد که شامل پراکسی edgemicro-auth است مشخص می‌کند.

این فرمان از Apigee Edge می‌خواهد که یک JWT تولید کند که سپس می‌تواند برای درستی‌سنجی تماس‌های 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 نیازی به پراکسی آگاه از میکروگیت‌وی ندارد که در Apigee Edge مستقر شود. درعوض، با ارائه نام پراکسی محلی، مسیر پایه، و نشانی وب هدف هنگام شروع ریزدروازه، «پراکسی محلی» را پیکربندی می‌کنید. سپس فراخوانی‌های API به ریزدروازه به نشانی وب هدف کارگزار محلی ارسال می‌شود. از همه جنبه‌های دیگر، حالت پراکسی محلی دقیقاً مانند اجرای Edge Microgateway در حالت عادی آن عمل می‌کند. اصالت‌سنجی، دستگیری با افزایش ناگهانی، اجرای سهمیه، افزایه‌های سفارشی، و غیره به همین شکل کار می‌کنند.

مورد استفاده و مثال

حالت پراکسی محلی زمانی مفید است که فقط نیاز دارید یک پراکسی را با نمونه Edge Microgateway تک‌منظوره مرتبط کنید. برای مثال، می‌توانید Edge Microgateway را به‌عنوان پراکسی جانبی به Kubernetes تزریق کنید، جایی که ریزدروازه و سرویس هرکدام در یک غلاف واحد اجرا می‌شوند و ریزدروازه ترافیک را به سرویس همراه خود و از آن مدیریت می‌کند. شکل زیر این معماری را نشان می‌دهد که در آن Edge Microgateway به‌عنوان پراکسی خودروی جانبی در خوشه Kubernetes عمل می‌کند. هر نمونه ریزدروازه فقط با یک نقطه پایانی در سرویس همراه خود صحبت می‌کند:

Edgemicro به‌عنوان Sidecar

یکی از مزایای این سبک معماری این است که Edge Microgateway مدیریت API را برای سرویس‌های منفردی که در محیط ظرفی مستقر شده‌اند، مثل خوشه Kubernetes، فراهم می‌کند.

درحال پیکربندی حالت پراکسی محلی

برای پیکربندی Edge Microgateway برای اجرا در حالت پراکسی محلی، این مراحل را دنبال کنید:

  1. برای راه‌اندازی محیط پیکربندی محلی، دقیقاً مانند راه‌اندازی معمولی Edge Microgateway، edgemicro init را اجرا کنید. همچنین ببینید پیکربندی Edge Microgateway.
  2. edgemicro configure را همان‌طور که در تنظیمات معمول Edge Microgateway انجام می‌دهید اجرا کنید. برای مثال:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    این فرمان خط‌مشی edgemicro-auth را در Edge مستقر می‌کند و کلید و رمزی را برمی‌گرداند که برای شروع ریزدروازه به آن نیاز دارید. اگر به راهنمایی نیاز دارید، پیکربندی Edge Microgateway را ببینید.

  3. در Apigee Edge، محصول API را با الزامات پیکربندی اجباری زیر ایجاد کنید (می‌توانید همه پیکربندی‌های دیگر را به دلخواهتان مدیریت کنید):
  4. در Apigee Edge، توسعه‌دهنده‌ای ایجاد کنید، یا درصورت تمایل می‌توانید از توسعه‌دهنده موجود استفاده کنید. برای دریافت راهنمایی، افزودن توسعه‌دهندگان بااستفاده از واسط کاربر مدیریت Edge را ببینید.

  5. در Apigee Edge، برنامه توسعه‌دهنده ایجاد کنید. باید محصول API را که به‌تازگی ایجاد کرده‌اید به برنامه اضافه کنید. برای دریافت راهنمایی، ثبت برنامه در واسط کاربر مدیریت Edge را ببینید.
  6. در ماشینی که Edge Microgateway نصب شده است، متغیر محیط زیر را با مقدار «۱» صادر کنید.
    export EDGEMICRO_LOCAL_PROXY=1
  7. فرمان 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 نشانی وب هدف پیشکار است (سرویسی که پیشکار فراخوانی می‌کند).
    • ‫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"
}

این تماس اولیه با میانای برنامه‌سازی کاربردی خطا تولید کرد زیرا کلید میانای برنامه‌سازی کاربردی معتبری ارائه نکردید. می‌توانید کلید را در برنامه «توسعه‌دهنده» که قبلاً ساخته‌اید پیدا کنید. برنامه را در «واسط کاربر Edge» باز کنید، «کلید مصرف‌کننده» را کپی کنید، و از آن کلید به این صورت استفاده کنید:

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":""
}

استفاده از همگام‌ساز

این بخش نحوه استفاده از همگام‌ساز را توضیح می‌دهد. همگام‌ساز ویژگی اختیاری است که با امکان بازیابی داده‌های پیکربندی از Apigee Edge و نوشتن آن در پایگاه داده محلی Redis، تاب‌آوری Edge Microgteway را بهبود می‌بخشد. با اجرای نمونه همگام‌ساز، نمونه‌های دیگر Edge Microgateway که روی گره‌های مختلف اجرا می‌شوند می‌توانند پیکربندی خود را مستقیماً از این پایگاه داده بازیابی کنند.

درحال‌حاضر، ویژگی همگام‌ساز برای کار با Redis 5.0.x پشتیبانی می‌شود.

هم‌زمان‌ساز چیست؟

همگام‌ساز سطحی از انعطاف‌پذیری را برای Edge Microgateway فراهم می‌کند. این کار کمک می‌کند که هر نمونه Edge Microgateway از پیکربندی یکسانی استفاده کند، و اینکه درصورت اختلال در اینترنت، نمونه‌های Edge Microgateway بتوانند به‌درستی راه‌اندازی و اجرا شوند.

به‌طور پیش‌فرض، نمونه‌های Edge Microgateway باید بتوانند با Apigee Edge ارتباط برقرار کنند تا داده‌های پیکربندی خود را، مانند پیکربندی‌های محصول API و پراکسی API، بازیابی و بازآوری کنند. اگر اتصال اینترنت با Edge مختل شود، نمونه‌های دروازه کوچک می‌توانند به عملکرد خود ادامه دهند زیرا جدیدترین داده‌های پیکربندی در حافظه نهان ذخیره شده است. بااین‌حال، نمونه‌های ریزدروازه جدید نمی‌توانند بدون اتصال واضح شروع شوند. علاوه‌براین، ممکن است اختلال در اینترنت باعث شود یک یا چند نمونه دروازه کوچک با اطلاعات پیکربندی که با نمونه‌های دیگر همگام نیستند اجرا شوند.

همگام‌ساز Edge Microgateway سازوکار جایگزینی برای نمونه‌های Edge Microgateway فراهم می‌کند تا داده‌های پیکربندی موردنیاز برای راه‌اندازی و پردازش ترافیک پراکسی میانای برنامه‌سازی کاربردی را بازیابی کنند. داده‌های پیکربندی بازیابی‌شده از تماس‌ها با Apigee Edge شامل این موارد است: تماس jwk_public_keys، تماس jwt_public_key، تماس راه‌اندازی اولیه، و تماس محصولات API. همگام‌ساز این امکان را فراهم می‌کند که همه نمونه‌های Edge Microgateway که روی گره‌های مختلف اجرا می‌شوند به‌درستی راه‌اندازی شوند و حتی اگر اتصال اینترنت بین Edge Microgateway و Apigee Edge مختل شود، همگام‌سازی شوند.

همگام‌ساز نمونه‌ای از Edge Microgateway است که به‌طور ویژه پیکربندی شده است. تنها هدف آن نظرسنجی از Apigee Edge (زمان‌بندی قابل‌پیکربندی است)، بازیابی داده‌های پیکربندی، و نوشتن آن در پایگاه داده محلی Redis است. خود نمونه همگام‌ساز نمی‌تواند ترافیک کارگزار API را پردازش کند. نمونه‌های دیگر Edge Microgateway که روی گره‌های مختلف اجرا می‌شوند می‌توانند پیکربندی شوند تا داده‌های پیکربندی را از پایگاه داده Redis بازیابی کنند، نه از Apigee Edge. ازآنجایی‌که همه نمونه‌های ریزدروازه داده‌های پیکربندی خود را از پایگاه داده محلی می‌کشند، حتی درصورت اختلال در اینترنت نیز می‌توانند درخواست‌های API را راه‌اندازی و پردازش کنند.

درحال پیکربندی نمونه همگام‌ساز

پیکربندی زیر را به فایل org-env/config.yaml برای نصب Edge Microgateway که می‌خواهید به‌عنوان همگام‌ساز استفاده کنید اضافه کنید:

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true

برای مثال:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true
گزینه شرح
redisHost میزبانی که نمونه Redis شما در آن اجرا می‌شود. پیش‌فرض: 127.0.0.1
redisPort درگاه نمونه Redis. پیش‌فرض: ۶۳۷۹
redisDb پایگاه داده Redis برای استفاده. پیش‌فرض: ۰
redisPassword گذرواژه پایگاه داده شما.

در آخر، فایل پیکربندی را ذخیره کنید و نمونه Edge Microgateway را شروع کنید. این ابزار شروع به نظرسنجی از Apigee Edge و ذخیره کردن داده‌های پیکربندی بارگیری‌شده در پایگاه داده Redis می‌کند.

پیکربندی نمونه‌های Edge Microgateway معمولی

با اجرای همگام‌ساز، می‌توانید گره‌های Edge Microgateway اضافی را پیکربندی کنید تا نمونه‌های میکروگیت‌وی معمولی را اجرا کنند که ترافیک پراکسی میانای برنامه‌سازی کاربردی را پردازش می‌کنند. بااین‌حال، این نمونه‌ها را پیکربندی می‌کنید تا داده‌های پیکربندی خود را از پایگاه داده Redis دریافت کنند نه از Apigee Edge.

پیکربندی زیر را به فایل org-env/config.yaml هر گره «درگاه میکرو Edge» اضافی اضافه کنید. توجه داشته باشید که خصوصیت synchronizerMode روی 0 تنظیم شده است. این دارایی نمونه را طوری تنظیم می‌کند که به‌عنوان نمونه «ریزدروازه لبه‌ای» معمولی عمل کند که ترافیک پراکسی API را پردازش می‌کند، و نمونه داده‌های پیکربندی خود را از پایگاه داده Redis دریافت می‌کند.

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

برای مثال:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

خصوصیت‌های پیکربندی

خصوصیت‌های پیکربندی زیر برای پشتیبانی از استفاده از همگام‌ساز اضافه شده است:

مشخصه مقادیر شرح
edge_config.synchronizerMode ‫۰ یا ۱

اگر ۰ (پیش‌فرض) باشد، Edge Microgateway در حالت استاندارد خود عمل می‌کند.

اگر ۱، نمونه Edge Microgateway را برای عملکرد به‌عنوان همگام‌ساز شروع کنید. در این حالت، نمونه داده‌های پیکربندی را از Apigee Edge واکشی می‌کند و آن را در پایگاه داده محلی Redis ذخیره می‌کند. این نمونه نمی‌تواند درخواست‌های پراکسی API را پردازش کند؛ تنها هدف آن نظرسنجی از Apigee Edge برای داده‌های پیکربندی و نوشتن آن در پایگاه داده محلی است. database. سپس باید نمونه‌های ریزدروازه دیگر را پیکربندی کنید تا از پایگاه داده بخوانند.

edge_config.redisBasedConfigCache درست یا نادرست اگر درست باشد، نمونه Edge Microgateway داده‌های پیکربندی خود را به‌جای Apigee Edge از پایگاه داده Redis واکشی می‌کند. پایگاه داده Redis باید همان پایگاه داده‌ای باشد که همگام‌ساز برای نوشتن در آن پیکربندی شده است. اگر پایگاه داده Redis دردسترس نباشد یا اگر پایگاه داده خالی باشد، ریزدروازه به‌دنبال فایل cache-config.yaml موجود برای پیکربندی خود می‌گردد.

اگر روی false (پیش‌فرض) تنظیم شده باشد، نمونه Edge Microgateway داده‌های پیکربندی را مثل همیشه از Apigee Edge واکشی می‌کند.

edgemicro.config_change_poll_interval فاصله زمانی، برحسب ثانیه بازه زمانی نظرسنجی را برای همگام‌ساز مشخص می‌کند تا داده‌ها را از Apigee Edge بکشد.

درحال پیکربندی نشانی‌های وب مستثناشده برای افزونه‌ها

می‌توانید دروازه کوچک را پیکربندی کنید تا پردازش افزایه‌ها را برای نشانی‌های وب مشخص‌شده رد کند. می‌توانید این نشانی‌های وب «مستثناشده» را به‌صورت سراسری (برای همه افزایه‌ها) یا برای افزایه‌های خاص پیکربندی کنید.

برای مثال:

...
edgemicro:
  ...
  plugins:
    excludeUrls: '/hello,/proxy_one' # global exclude urls
    sequence:
      - oauth
      - json2xml
      - quota
json2xml:
  excludeUrls: '/hello/xml'  # plugin level exclude urls
...

در این مثال، افزونه‌ها تماس‌های ورودی کارگزار API را با مسیرهای /hello یا /proxy_one پردازش نخواهند کرد. به‌علاوه، افزایه json2xml برای میاناهای برنامه‌سازی کاربردی با /hello/xml در مسیرشان رد خواهد شد.

تنظیم مشخصه‌های پیکربندی با مقادیر متغیر محیط

می‌توانید متغیرهای محیطی را بااستفاده از برچسب‌ها در فایل پیکربندی مشخص کنید. برچسب‌های متغیر محیط مشخص‌شده با مقادیر متغیر محیط واقعی جایگزین می‌شوند. جایگزین‌ها فقط در حافظه ذخیره می‌شوند و در پیکربندی اصلی یا فایل‌های حافظه نهان ذخیره نمی‌شوند.

در این مثال، مشخصه key با مقدار متغیر محیطی TARGETS_SSL_CLIENT_KEY جایگزین می‌شود، و غیره.

targets:
  - ssl:
      client:
        key: <E>TARGETS_SSL_CLIENT_KEY</E>
        cert: <E>TARGETS_SSL_CLIENT_CERT</E>
        passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>

در این مثال، از برچسب <n> برای نشان دادن مقدار عدد صحیح استفاده می‌شود. فقط اعداد صحیح مثبت پشتیبانی می‌شوند.

edgemicro:
  port: <E><n>EMG_PORT</n></E>

در این مثال، از برچسب <b> برای نشان دادن مقدار بولی (یعنی درست یا نادرست) استفاده می‌شود.

quotas:
  useRedis: <E><b>EMG_USE_REDIS</b></E>