{"id":50580,"date":"2023-01-21T06:19:22","date_gmt":"2023-06-05T20:03:31","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/"},"modified":"2024-04-29T10:44:12","modified_gmt":"2024-04-29T02:44:12","slug":"kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/","title":{"rendered":"KONG\u3053\u3068\u306f\u3058\u3081"},"content":{"rendered":"<h1>KONG\u3068\u306f<\/h1>\n<p>\u516c\u5f0f\u8aad\u3081\u3063\u3066\u306e\u306f\u304a\u3044\u3068\u3044\u3066<br \/>\n\u565b\u307f\u7815\u3044\u3066\u8aac\u660e\u3059\u308b\u3068<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3092\u69cb\u7bc9\u3059\u308b\u6642\u306eAPI Gateway\u3068\u306a\u308b\u3082\u306e<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ea\u30d0\u30d7\u30ed\u306e\u5f79\u5272\u3092\u3057\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5404API\u306b\u632f\u308a\u5206\u3051\u308b\u3088<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">plugin\u3067\u8a8d\u8a3c\u3084\u6d41\u91cf\u5236\u9650\u3001\u30ed\u30b0\u53d6\u308a\u3082\u3067\u304d\u308b\u3088<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">kong\u672c\u4f53\u3082\u30af\u30e9\u30b9\u30bf\u5316\u3067\u304d\u308b\u3057\u3001API\u3082\u30a2\u30b0\u30ea\u30b2\u30fc\u30b7\u30e7\u30f3\u3067\u304d\u308b\u3088<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">API Gateway\u307f\u305f\u3044\u306e\u304c\u306a\u3044\u3068\u305f\u304f\u3055\u3093API\u30b5\u30fc\u30d3\u30b9\u4f5c\u308b\u3068\u308f\u3051\u308f\u304b\u3093\u306a\u304f\u306a\u3063\u3061\u3083\u3046\u3088<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u5b9f\u969b\u306fnginx\u306e\u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u3088\u3046\u306a\u3082\u306e\u3067API\u3092\u7d4c\u7531\u3057\u3066nginx\u306e\u8a2d\u5b9a\u306b\u53cd\u6620\u3057\u3066\u304f\u308c\u308b\u611f\u3058<\/ul>\n<p>\u3064\u307e\u308a\u8272\u3005\u306a\u8a00\u8a9e\u3067\u5b9f\u88c5\u3055\u308c\u305fAPI\u30b5\u30fc\u30d3\u30b9\u306e\u7dcf\u5408\u7a93\u53e3\u3002<br \/>\nKONG\u914d\u4e0b\u306bAPI\u30b5\u30fc\u30d3\u30b9\u7fa4\u3092\u7f6e\u3044\u3066\u3042\u3068\u306ffrontend\u3067\u3082curl\u3067\u3082\u597d\u304d\u306b\u53e9\u3051\u3070\uff1f<br \/>\n\u304f\u3089\u3044\u306e\u69cb\u6210\u306b\u3067\u304d\u305d\u3046<\/p>\n<p>KONG\u4ee5\u5916\u3060\u3068cloud\u7cfb\u3067AWS API Gateway\u3068\u304bAzure\u306eAPI Management\u3068\u304bGoogle Cloud Endpoints\u304c\u3042\u308b\u307f\u305f\u3044<\/p>\n<p>\u3042\u3068\u306f\u81ea\u529b\u3067Apache\u3068\u304bNginx\u3068\u304b\u3067\u30ea\u30d0\u30d7\u30ed\u3059\u308b\u3068\u304b<br \/>\n\uff08\u3053\u308c\u3060\u3068\u8a8d\u8a3c\u3092\u5225\u9014\u81ea\u4f5cor\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3051\u3069\uff09<\/p>\n<p>API\u767a\u884c\u3042\u305f\u308a\u306e\u5f93\u91cf\u8ab2\u91d1\u306e\u4ed5\u7d44\u307f\u3068\u304b\u3092\u8003\u3048\u3066\u3066API Gateway\u306e\u5fc5\u8981\u6027\u306b\u305f\u3069\u308a\u7740\u3044\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u308b<\/p>\n<h1>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h1>\n<p>\u516c\u5f0f\u306einstall\u30ac\u30a4\u30c9\u306b\u3044\u308d\u3044\u308d\u3042\u308b\u306e\u3060\u3051\u308c\u3069\u4eca\u56de\u306fEC2\u306eAmazon Linux\u306b\u5165\u308c\u308b<\/p>\n<p>KONG\u7528\u306e\u7ba1\u7406DB\u306fCassandra\u304bPostgres\u304c\u9078\u629e\u3067\u304d\u308b<br \/>\n\u99b4\u67d3\u307f\u306ePostgres\u3067\u3084\u3063\u3066\u307f\u308b<\/p>\n<h2>EC2\u7528\u610f<\/h2>\n<p>Amazon Linux\u3092\u3068\u306b\u304b\u304f\u7528\u610f\u3057\u305f<br \/>\nelastic IP\u3067IP\u3092\u56fa\u5b9a<br \/>\n\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u3067\u4ee5\u4e0b\u306eport\u3092\u30a4\u30f3\u30d0\u30a6\u30f3\u30c9\u8a31\u53ef\u3057\u305f<br \/>\n* 5432 &#8211; postgres<br \/>\n* 80 &#8211; \u30e6\u30fc\u30b6\u7528api(http)*1<br \/>\n* 443 &#8211; \u30e6\u30fc\u30b6\u7528api(https)*1<br \/>\n* 8001 &#8211; admin\u7528api(http) *2<br \/>\n* 8443 &#8211; \u30e6\u30fc\u30b6\u7528api(https) *2<\/p>\n<p>*1 kong\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6API\u306f8000\u30688443\u3060\u304c\u5f8c\u8ff0\u3059\u308bkong\u306econf\u8a2d\u5b9a\u306780\u3068443\u306b\u5909\u66f4\u3059\u308b\u306e\u3067\u3002<\/p>\n<p>*2 \u901a\u5e38\u306fadmin\u7528API\u3092\u516c\u958b\u3057\u3061\u3083\u3044\u3051\u306a\u3044\u3002\u4eca\u56de\u8a66\u3059\u7528\u306b\u7a7a\u3051\u305f<\/p>\n<p>ssh\u3067\u63a5\u7d9a\u3057\u3066\u4ee5\u4e0b\u3092\u64cd\u4f5c<\/p>\n<h3>root password\u8a2d\u5b9a<\/h3>\n<pre class=\"post-pre\"><code>sudo su -\r\npasswd\r\n<\/code><\/pre>\n<h3>yum \u8a2d\u5b9a<\/h3>\n<pre class=\"post-pre\"><code># yum -y install yum-cron\r\n\r\n# vi \/etc\/yum\/yum-cron.conf\r\n\r\napply_updates = yes\u3000\u2190\u3000\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9&amp;\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u81ea\u52d5\u3067\u884c\u3046\u3088\u3046\u306b\u3059\u308b\r\n\r\n# service yum-cron start\r\n# chkconfig --add yum-cron\r\n# chkconfig yum-cron on\r\n# yum install -y git\r\n<\/code><\/pre>\n<h3>root\u5b9b\u30e1\u30fc\u30eb\u3092\u8ee2\u9001\u8a2d\u5b9a<\/h3>\n<pre class=\"post-pre\"><code># sed -i '\/^root:\/d' \/etc\/aliases\r\n# echo \"root: xxxx@xxx.xx.xx\" &gt;&gt; \/etc\/aliases\r\n# newaliases\r\n\r\n<\/code><\/pre>\n<h2>Postgres\u7528\u610f<\/h2>\n<p>\u904e\u53bb\u306e\u907a\u7523\u3092\u4f7f\u3063\u3066\u30bd\u30fc\u30b9\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<br \/>\n\u3082\u3061\u308d\u3093\u305d\u3093\u306a\u3053\u3068\u3057\u306a\u3044\u3067\u3082postgres\u3055\u3048\u52d5\u3044\u3066\u3044\u308c\u3070KONG\u306fOK<br \/>\n(\u3082\u3063\u3068\u8a00\u3048\u3070RDS\u3067\u3082\u3044\u3044)<\/p>\n<h4>\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h4>\n<pre class=\"post-pre\"><code><span class=\"c\"># yum install -y readline-devel zlib-devel gcc uuid uuid-devel<\/span>\r\n<\/code><\/pre>\n<h4>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5148\u30d5\u30a9\u30eb\u30c0\u306e\u4f5c\u6210<\/h4>\n<pre class=\"post-pre\"><code># mkdir -p \/usr\/local\/postgresql_kong\/data\r\n<\/code><\/pre>\n<h4>OS\u30e6\u30fc\u30b6\u306bpostgres\u3092\u8ffd\u52a0<\/h4>\n<pre class=\"post-pre\"><code># useradd postgres\r\n<\/code><\/pre>\n<h4>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5148\u30d5\u30a9\u30eb\u30c0\u306eowner\u3092postgres\u306b<\/h4>\n<pre class=\"post-pre\"><code># chown postgres:postgres -R \/usr\/local\/postgresql_kong\r\n\r\n<\/code><\/pre>\n<h4>\u30d1\u30c3\u30b1\u30fc\u30b8\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3068\u914d\u7f6e<\/h4>\n<pre class=\"post-pre\"><code># wget \"https:\/\/ftp.postgresql.org\/pub\/source\/v9.6.2\/postgresql-9.6.2.tar.gz\"\r\n# mkdir \/usr\/local\/src\/postgresql\r\n# mv postgresql-9.6.2.tar.gz \/usr\/local\/src\/postgresql\r\n# cd \/usr\/local\/src\/postgresql\/\r\n# tar xvfz postgresql-9.6.2.tar.gz\r\n\r\n# cp -pr postgresql-9.6.2 postgresql_kong\r\n\r\n<\/code><\/pre>\n<h4>postgresql\u306emake<\/h4>\n<p>\u904e\u53bb\u306e\u907a\u7523\u3067uuid\u3084\u3089contrib\u3084\u3089\u3082\u5165\u308c\u3061\u3083\u3063\u3066\u308b<br \/>\nKONG\u3067\u306f\u4f7f\u308f\u306a\u3044\u3068\u601d\u3046\u3051\u3069\u9762\u5012\u306a\u306e\u3067\u305d\u306e\u307e\u307e<\/p>\n<p>\u2192KONG\u3092postgres\u3067\u52d5\u304b\u3057\u305f\u3089uuid\u3092\u4f7f\u3063\u3066\u3044\u305f\u306e\u3067<br \/>\npostgres\u3092\u30bd\u30fc\u30b9\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5834\u5408\u306f\u3053\u306e\u624b\u9806\u901a\u308a<br \/>\nuuid\u3092\u5165\u308c\u3066\u3084\u308b\u5fc5\u8981\u304c\u3042\u308b<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\"># cd \/usr\/local\/src\/postgresql\/postgresql_kong<\/span>\r\n<span class=\"c\"># .\/configure -prefix=\/usr\/local\/postgresql_kong -with-pgport=5432 --with-uuid=ossp<\/span>\r\n<span class=\"c\"># make &amp;&amp; make install<\/span>\r\n<span class=\"c\"># cd \/usr\/local\/src\/postgresql\/postgresql_kong\/contrib\/pgcrypto<\/span>\r\n<span class=\"c\"># make &amp;&amp; make install<\/span>\r\n<span class=\"c\"># cd \/usr\/local\/src\/postgresql\/postgresql_kong\/contrib\/uuid-ossp<\/span>\r\n<span class=\"c\"># make &amp;&amp; make install<\/span>\r\n<\/code><\/pre>\n<h4>switch to postgres<\/h4>\n<pre class=\"post-pre\"><code># su - postgres\r\n\r\n<\/code><\/pre>\n<h4>initdb<\/h4>\n<pre class=\"post-pre\"><code>$ cd \/usr\/local\/postgresql_kong\/bin\/\r\n$ .\/initdb -D \/usr\/local\/postgresql_kong\/data\/\r\n<\/code><\/pre>\n<h4>exit postgres<\/h4>\n<pre class=\"post-pre\"><code>$ exit\r\n<\/code><\/pre>\n<h4>postgresql.conf<\/h4>\n<pre class=\"post-pre\"><code># cp -p \/usr\/local\/postgresql_kong\/data\/postgresql.conf \/usr\/local\/postgresql_kong\/data\/postgresql.conf.org\r\n\r\n# vi \/usr\/local\/postgresql_kong\/data\/postgresql.conf\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>listen_addresses = '*'\r\nport=5432\u3068\u304b\u3001\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3059\u308b\u3060\u3051\r\nlog_line_prefix = '&lt;%t %u %d&gt;'\r\n<\/code><\/pre>\n<h4>pg_hba.conf<\/h4>\n<pre class=\"post-pre\"><code># cp -p \/usr\/local\/postgresql_kong\/data\/pg_hba.conf \/usr\/local\/postgresql_kong\/data\/pg_hba.conf.org\r\n\r\n# vi \/usr\/local\/postgresql_kong\/data\/pg_hba.conf\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>host kong kong 0.0.0.0\/0 md5\r\n<\/code><\/pre>\n<h4>\u8d77\u52d5\u30b9\u30af\u30ea\u30d7\u30c8\u4f5c\u6210<\/h4>\n<pre class=\"post-pre\"><code># cd \/usr\/local\/src\/postgresql\r\n# cp -p postgresql_kong\/contrib\/start-scripts\/linux postgresql_kong.sh\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code># vi postgresql_kong.sh\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>prefix=\/usr\/local\/pgsql\r\n\u2193\r\nprefix=\/usr\/local\/postgresql_kong\r\n\r\nPGDATA=\"\/usr\/local\/pgsql\/data\"\r\n\u2193\r\nPGDATA=\"${prefix}\/data\"\r\n\r\n<\/code><\/pre>\n<h4>\u8d77\u52d5\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u5b9f\u884c\u6a29\u3092\u3064\u3051\u308b<\/h4>\n<pre class=\"post-pre\"><code># chmod +x postgresql_kong.sh\r\n\r\n<\/code><\/pre>\n<h4>\u8d77\u52d5\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u30b5\u30fc\u30d3\u30b9\u306b\u767b\u9332<\/h4>\n<pre class=\"post-pre\"><code># ln -s \/usr\/local\/src\/postgresql\/postgresql_kong.sh \/etc\/init.d\/postgresql_kong\r\n\r\n# service postgresql_kong start\r\n# chkconfig --add \/etc\/init.d\/postgresql_kong\r\n# chkconfig postgresql_kong on\r\n<\/code><\/pre>\n<h2>KONG\u7528\u306ePostgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210<\/h2>\n<pre class=\"post-pre\"><code># ln -s \/usr\/local\/postgresql_kong\/lib\/libpq.so.5 \/usr\/lib64\/libpq.so.5\r\n\r\n# \/usr\/local\/postgresql_kong\/bin\/psql -U postgres\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>CREATE ROLE kong WITH LOGIN SUPERUSER PASSWORD 'kong';\r\nCREATE DATABASE \"kong\" WITH OWNER = kong ENCODING = 'UTF8';\r\n<\/code><\/pre>\n<h2>KONG\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h2>\n<pre class=\"post-pre\"><code>wget https:\/\/github.com\/Mashape\/kong\/releases\/download\/0.10.0\/kong-0.10.0.aws.rpm\r\n<\/code><\/pre>\n<p>yum\u304b\u3089\u7c21\u5358\u306b\u3002<\/p>\n<pre class=\"post-pre\"><code>yum install epel-release\r\nyum install kong-0.10.0.aws.rpm --nogpgcheck\r\n<\/code><\/pre>\n<h2>KONG\u306e\u8d77\u52d5<\/h2>\n<pre class=\"post-pre\"><code>kong start\r\n<\/code><\/pre>\n<p>Kong started\u3068\u51fa\u308c\u3070OK<\/p>\n<p>postman\u304b\u3089\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.eYO3pk.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/68-0.png\" alt=\"Kobito.eYO3pk.png\" \/><\/div>\n<h1>KONG\u306e\u8a2d\u5b9a<\/h1>\n<h2>Config\u30d5\u30a1\u30a4\u30eb\u306e\u7de8\u96c6<\/h2>\n<p>kong\u306econfig\u306f\/etc\/kong\/kong.conf\u3067\u5909\u66f4\u3067\u304d\u308b<br \/>\nnginx\u3042\u305f\u308a\u306e\u8a2d\u5b9a\u3082\u3053\u3053\u3067\u3002<\/p>\n<h3>config\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210<\/h3>\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6642\u306b\u7528\u610f\u3055\u308c\u308b\/etc\/kong\/kong.conf.default\u3092\u30b3\u30d4\u30fc\u3057\u3066\u4f7f\u3046<\/p>\n<pre class=\"post-pre\"><code>cp -p \/etc\/kong\/kong.conf.default \/etc\/kong\/kong.conf\r\n<\/code><\/pre>\n<h3>\u30e6\u30fc\u30b6\u5229\u7528\u30dd\u30fc\u30c8\u306e\u5909\u66f4<\/h3>\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u3060\u30688000\/8443\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u309280\/443\u306b\u5909\u66f4\u3059\u308b<\/p>\n<pre class=\"post-pre\"><code>#proxy_listen = 0.0.0.0:8000\r\n\u2193\r\nproxy_listen = 0.0.0.0:80\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>#proxy_listen_ssl = 0.0.0.0:8443\r\n\u2193\r\nproxy_listen_ssl = 0.0.0.0:443\r\n<\/code><\/pre>\n<h3>SSL\u95a2\u9023<\/h3>\n<p>cert\u3092\u8a2d\u5b9a\u3059\u308b\u306e\u306f\u4ee5\u4e0b\u306e\u7b87\u6240\uff08\u4eca\u56de\u306f\u98db\u3070\u3059\uff09<\/p>\n<pre class=\"post-pre\"><code>#ssl_cert =\r\n#ssl_cert_key =\r\n#admin_ssl_cert =\r\n#admin_ssl_cert_key =\r\n<\/code><\/pre>\n<h3>postgres\u95a2\u9023<\/h3>\n<p>\u4ee5\u4e0b\u306e\u7b87\u6240\u3067\u8a2d\u5b9a\u3067\u304d\u308b\uff08\u4eca\u56de\u5909\u66f4\u306a\u3057\uff09<\/p>\n<pre class=\"post-pre\"><code>#database = postgres\r\n\r\n#pg_host = 127.0.0.1\r\n#pg_port = 5432\r\n#pg_user = kong\r\n#pg_password = kong\r\n#pg_database = kong\r\n#pg_ssl = off\r\n#pg_ssl_verify = off\r\n\r\n<\/code><\/pre>\n<p>KONG\u306b\u53cd\u6620<\/p>\n<pre class=\"post-pre\"><code>kong reload\r\n<\/code><\/pre>\n<h1>API\u3068\u8a8d\u8a3c<\/h1>\n<h2>\u7c21\u5358\u306aAPI\u306e\u8ffd\u52a0<\/h2>\n<p>\u3068\u308a\u3042\u3048\u305ayahoo\u306bproxy\u3059\u308b\u4f8b<\/p>\n<p>api\u306fport8001\u306e\/api\u306b\u5bfe\u3057\u3066post\u3059\u308b\u3053\u3068\u3067\u8ffd\u52a0\u3067\u304d\u308b<br \/>\n\u6e21\u305b\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u516c\u5f0fdoc\u3092\u53c2\u7167<\/p>\n<p>postman\u3060\u3068\u3053\u3093\u306a\u611f\u3058<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.Qtvp1L.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/92-0.png\" alt=\"Kobito.Qtvp1L.png\" \/><\/div>\n<p>\u3053\u308c\u3067\u30d6\u30e9\u30a6\u30b6\u304b\u3089 http:\/\/[kong host]\/demo\/yahoo \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068yahoo\u306bproxys\u3055\u308c\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u308b<\/p>\n<h2>api key\u8a8d\u8a3c\u304c\u5fc5\u8981\u306aAPI\u306e\u8ffd\u52a0<\/h2>\n<p>kong\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u8a8d\u8a3cplugin\u304c\u3042\u308b<br \/>\n\u3053\u308c\u3092\u767b\u9332\u3059\u308bAPI\u540d\u6bce\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u308b<\/p>\n<h3>API\u3092\u4f5c\u6210<\/h3>\n<p>\u307e\u305amock api\u3092mockbin\u3092\u5229\u7528\u3057\u3066\u4f5c\u6210<\/p>\n<p>\u6b21\u306bkong\u306bAPI\u3092\u4f5c\u6210<br \/>\nuri\u306f \/key-auth\/mockbin \u306b\u3057\u305f<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=mockbin&amp;upstream_url=http:\/\/mockbin.org\/bin\/e3edb608-40fd-465f-bc2a-854559e55dde&amp;uris=\/key-auth\/mockbin' \"http:\/\/[kong host name]:8001\/apis\"\r\n<\/code><\/pre>\n<p>\u7d9a\u3044\u3066API\u3092\u5b9f\u884c<\/p>\n<pre class=\"post-pre\"><code>curl -X GET -d '' \"http:\/\/[kong host name]\/key-auth\/mockbin\"\r\n<\/code><\/pre>\n<p>\u3053\u308c\u3067JSON\u304c\u8fd4\u3063\u3066\u304d\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b<\/p>\n<h3>\u4f5c\u6210\u3057\u305fAPI\u306bkey-auth\u3092\u4ed8\u4e0e<\/h3>\n<p>\u8a8d\u8a3c\u3092\u4ed8\u4e0e\u3057\u305f\u3044API\u306b\u5411\u3051\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306bPOST\u3059\u308b<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=key-auth' \"http:\/\/[kong host name]:8001\/apis\/mockbin\/plugins\/\"\r\n<\/code><\/pre>\n<p>POST\u5148\u306eURL\u306f \/apis\/[\u5bfe\u8c61\u306eAPI name or id]\/plugins\/<\/p>\n<p>\u30d1\u30e9\u30e1\u30bf\u306b name=key-auth\u3092\u5165\u308c\u308b\u3053\u3068\u3067<br \/>\nkey-auth\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u8a72\u5f53API(\u4eca\u56de\u306fmockbin)\u306b\u5bfe\u3057\u3066\u9069\u7528\u3055\u308c\u308b<\/p>\n<p>\u3053\u306e\u72b6\u614b\u3067\u3082\u3046\u4e00\u5ea6API\u306b\u5bfe\u3057\u3066GET\u3059\u308b\u3068401\u306b\u306a\u308b<\/p>\n<h3>\u30e6\u30fc\u30b6\u306e\u4f5c\u6210<\/h3>\n<p>key-auth\u3092\u901a\u904e\u3055\u305b\u308b\u70ba\u306e\u30e6\u30fc\u30b6\u3092\u4f5c\u6210<br \/>\nKONG\u3067\u306fconsumers\u3068\u547c\u3093\u3067\u3044\u308b<\/p>\n<p>\u30e6\u30fc\u30b6\u4f5c\u6210\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9f\u884c\u3059\u308b<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'username=testuser&amp;custom_id=A01001' \"http:\/\/[kong host name]:8001\/consumers\/\"\r\n<\/code><\/pre>\n<blockquote><p>custom_id\u306f\u4efb\u610f\u8a2d\u5b9a\u3002\u5f8c\u3067\u81ea\u529b\u3067RDB\u306a\u3069\u3068\u306e\u7d10\u4ed8\u3051\u306b\u4f7f\u3046key\u3092\u5165\u308c\u308b\u7528\u9014\u3002<\/p><\/blockquote>\n<h3>\u30e6\u30fc\u30b6\u306bAPI KEY\u3092\u767a\u884c<\/h3>\n<p>key-auth\u306b\u5fc5\u8981\u306aAPI KEY\u3092\u30e6\u30fc\u30b6\u306b\u5bfe\u3057\u3066\u767a\u884c\u3059\u308b<\/p>\n<p>URI\u306f\/consumers\/[\u5bfe\u8c61\u30e6\u30fc\u30b6\u306ename or id]\/key-auth\/<br \/>\nBODY\u306bkey=[\u4efb\u610f\u306eAPI KEY\u540d]<br \/>\n\u3092\u8a2d\u5b9a\u3057\u3066POST\u3059\u308b<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'key=SAMPLE-KEY' \"http:\/\/[kong host name]:8001\/consumers\/testuser\/key-auth\/\"\r\n<\/code><\/pre>\n<h3>API KEY\u3092\u4f7f\u3063\u3066API\u3092\u767a\u884c\u3059\u308b<\/h3>\n<p>http header\u306b apikey \u3068\u3044\u3046\u540d\u524d\u3067\u767a\u884c\u3057\u305fKEY\u5024\u3092\u8a2d\u5b9a\u3057API\u3092\u767a\u884c\u3059\u308b\u3053\u3068\u3067\u5b9f\u884c\u3067\u304d\u308b<\/p>\n<pre class=\"post-pre\"><code>curl -X GET -H \"apikey: SAMPLE-KEY\" \"http:\/\/[kong host name]\/key-auth\/mockbin\"\r\n<\/code><\/pre>\n<blockquote><p>key\u5024\u304c\u9593\u9055\u3063\u3066\u3044\u308b\u5834\u5408403<br \/>\nkey\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408401<\/p><\/blockquote>\n<h2>oauth2.0\u8a8d\u8a3c\u304c\u5fc5\u8981\u306aAPI\u306e\u8ffd\u52a0<\/h2>\n<p>oauth2.0\u306e\u8272\u3005\u306aflow\u3067\u3044\u3063\u3066\u307f\u308b<\/p>\n<h3>SSL\u9069\u7528<\/h3>\n<p>KONG\u306eOAuth2.0\u3092\u8a66\u3059\u306b\u306fhttps\u901a\u4fe1\u304c\u5fc5\u8981<br \/>\ncertbot\u3092\u4f7f\u3063\u3066cert\u3092\u53d6\u5f97\u3059\u308b<br \/>\n(\u4e8b\u524d\u306bpublic DNS\u89e3\u6c7a\u304c\u5fc5\u8981)<\/p>\n<p>cert\u53d6\u5f97\u307e\u3067\u306f\u672c\u984c\u304b\u3089\u5916\u308c\u308b\u306e\u3067\u30e1\u30e2\u3060\u3051\u6b8b\u3059<\/p>\n<pre class=\"post-pre\"><code># kong stop\r\n# yum install httpd\r\n# service httpd start\r\n\r\n# yum install python27-devel git\r\n# easy_install pip\r\n# pip install --upgrade pip\r\n# pip install --upgrade virtualenv\r\n# git clone https:\/\/github.com\/certbot\/certbot\r\n# cd certbot\r\n# .\/certbot-auto certonly --webroot -w \/var\/www\/html -d xxxx.example.co.jp --agree-tos -m xxxxx@example.co.jp --debug\r\n\r\n# service httpd stop\r\n# kong start\r\n\r\n<\/code><\/pre>\n<p>\/etc\/letsencrypt\/live\/[host name]\u306e\u914d\u4e0b\u306bcert\u304c\u4f5c\u6210\u3055\u308c\u308b\u306e\u3067<br \/>\n\u3053\u308c\u3092kong.conf\u306b\u8a2d\u5b9a\u3059\u308b<\/p>\n<pre class=\"post-pre\"><code>vi \/etc\/kong\/kong.conf\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>ssl_cert = \/etc\/letsencrypt\/live\/[host name]\/cert.pem\r\n\r\nssl_cert_key = \/etc\/letsencrypt\/live\/[host name]\/privkey.pem\r\n<\/code><\/pre>\n<p>\u8a2d\u5b9a\u3092kong\u306b\u53cd\u6620<\/p>\n<pre class=\"post-pre\"><code>kong reload\r\n<\/code><\/pre>\n<p>\u3053\u308c\u3067https\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d<\/p>\n<h3>api\u306e\u4f5c\u6210<\/h3>\n<p>mockbin\u3067api mock\u3092\u4f5c\u6210<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.HJNDlp.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/136-0.png\" alt=\"Kobito.HJNDlp.png\" \/><\/div>\n<p>API\u3092KONG\u306b\u767b\u9332<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=mockbin-oauth&amp;upstream_url=http:\/\/mockbin.org\/bin\/2e884bd8-5b08-49c7-93bf-69a513f87739&amp;uris=\/test-oauth2\/mockbin' \"http:\/\/[kong host name]:8001\/apis\"\r\n<\/code><\/pre>\n<h3>api\u306boauth2.0\u3092\u9069\u7528<\/h3>\n<p>code flow, password, client credentials, implicit flow\u3092\u6709\u52b9\u306b\u3057\u305f<br \/>\nscope\u3082email phone address\u3068\u767b\u9332\u3057\u3066\u307f\u305f<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=oauth2&amp;config.scopes=email%2C phone%2C address&amp;config.enable_authorization_code=true&amp;config.mandatory_scope=true&amp;config.token_expiration=7200&amp;config.enable_client_credentials=true&amp;config.enable_implicit_grant=true&amp;config.enable_password_grant=true&amp;config.hide_credentials=false' \"http:\/\/[kong host name]:8001\/apis\/mockbin-oauth\/plugins\/\"\r\n<\/code><\/pre>\n<p>\u9069\u7528\u3057\u305f\u6642\u306eresponse\u5185\u306bprovision_key \u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3002<br \/>\ncode flow\u306e\u5834\u5408\u3001provision_key \u304c\u5fc5\u8981\u306b\u306a\u308b\u306e\u3067\u30e1\u30e2\u3063\u3066\u304a\u304f<\/p>\n<blockquote><p>\u3082\u3057\u304f\u306f[kong host]:8001\/apis\/[api-name]\/plugins \u3092GET\u3057\u3066\u78ba\u8a8d<\/p><\/blockquote>\n<p>\u4f5c\u6210\u3055\u308c\u308boauth2.0 endpoint\u306f\u4ee5\u4e0b\u306e\uff12\u3064<br \/>\n\uff08\u4e21\u65b9\u3068\u3082POST\u306e\u307f\uff09<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\/oauth2\/authorize<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\/oauth2\/token<\/ul>\n<h3>\u30e6\u30fc\u30b6\u306e\u4f5c\u6210<\/h3>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'username=oauthuser&amp;custom_id=A01002' \"http:\/\/[kong host name]:8001\/consumers\"\r\n<\/code><\/pre>\n<h3>oauth application\u306e\u4f5c\u6210<\/h3>\n<p>\u4f5c\u6210\u3057\u305fconsumers\u306b\u7d10\u4ed8\u3051\u308b\u5f62\u306b\u306a\u308b<\/p>\n<p>postman\u3067\u78ba\u8a8d\u3057\u305f\u304b\u3063\u305f\u306e\u3067redirect_uri\u306fpostman\u7528\u306ecallback\u3092\u767b\u9332\u3057\u305f<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=oauth-trial-application&amp;client_id=oauth-trial-application&amp;client_secret=secret&amp;redirect_uri=https:\/\/www.getpostman.com\/oauth2\/callback' \"http:\/\/[kong host name]:8001\/consumers\/oauthuser\/oauth2\"\r\n\r\n<\/code><\/pre>\n<h3>Access Token\u306e\u53d6\u5f97<\/h3>\n<p>Auth Url: https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/authorize<\/p>\n<p>Access Token Url: https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/token<\/p>\n<p>\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u6295\u3052\u308b\u3002<\/p>\n<p>URL\u4e0a\u3001endpoint\u3068\u306a\u308b\/oauth2\/authorize \u3084 \/oauth2\/token \u306e\u524d\u306b\u5404API\u306ePATH\u304c\u5165\u308b\u3053\u3068\u306b\u6ce8\u610f<\/p>\n<h4>client credentials<\/h4>\n<p>\u3044\u3064\u3082\u3069\u304a\u308a\u306b\u6295\u3052\u308b\u3060\u3051\u3067OK<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.dXlAAc.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/159-0.png\" alt=\"Kobito.dXlAAc.png\" \/><\/div>\n<p>\u76f4\u63a5\u6295\u3052\u308b\u306a\u3089\u3053\u3093\u306a\u611f\u3058<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'client_id=oauth-trial-application&amp;client_secret=secret&amp;grant_type=client_credentials&amp;scope=email' \"https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/token\"\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.EQ9NrD.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/162-0.png\" alt=\"Kobito.EQ9NrD.png\" \/><\/div>\n<h4>code flow<\/h4>\n<p>KONG\u306eplugin\u306b\u3042\u308bcode flow\u306fprovision_key\u304c\u5fc5\u8981\u306b\u306a\u3063\u305f\u308a\u3059\u308b\u306e\u3067\u7279\u6b8a\u304b\u3082\uff1f<\/p>\n<h5>code\u306e\u53d6\u5f97<\/h5>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'client_id=oauth-trial-application&amp;client_secret=secret&amp;response_type=code&amp;scope=email&amp;provision_key=[oauth\u3092api\u306b\u30bb\u30c3\u30c8\u3057\u305f\u6642\u306eprovision_key]&amp;authenticated_userid=oauthuser' \"https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/authorize\"\r\n\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.RnWDnJ.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/167-0.png\" alt=\"Kobito.RnWDnJ.png\" \/><\/div>\n<p>\u4e0a\u8a18\u306e\u3068\u304a\u308a\u3001provision_key \u304c\u5fc5\u8981\u306b\u306a\u308b\u3002<br \/>\n\u305d\u308c\u3068authenticated_userid \u3068\u3044\u3046key\u304c\u3042\u308a\u3053\u3053\u306b\u8a8d\u8a3c\u6e08\u307f\u306e\u500b\u4ebaID\u3092\u653e\u308a\u8fbc\u3080\u3068\u306e\u3053\u3068\u3002<br \/>\n\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u306f\u4e8b\u524d\u306b\u30ed\u30b0\u30a4\u30f3ID\/\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u8a8d\u8a3c\u3092\u884c\u3044\u3001\u6b21\u306bAPI\u8a8d\u53ef\u3068\u3057\u3066<br \/>\n\u8a8d\u8a3c\u6e08\u307fID\u3092\u5165\u308c\u3066code\u3092\u53d6\u5f97\u3057\u306b\u884c\u304f\u611f\u3058\u304b\u3002<\/p>\n<p>\u3061\u306a\u307f\u306b\u6210\u529f\u6642\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u306f\u3053\u3093\u306a\u611f\u3058<\/p>\n<pre class=\"post-pre\"><code>{\r\n  \"redirect_uri\": \"https:\/\/www.getpostman.com\/oauth2\/callback?code=0b621f05c59b474191394040f4444267\"\r\n}\r\n<\/code><\/pre>\n<p>API\u306bOauth\u3092\u8a2d\u5b9a\u3057\u305f\u6642\u3001redirect_url\u306b\u6307\u5b9a\u3057\u305f\u3068\u3053\u306bcode\u4ed8\u304d\u3067\u623b\u3063\u3066\u3044\u304f\u3002<\/p>\n<h5>code\u3092token\u306bexchange<\/h5>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'client_id=oauth-trial-application&amp;client_secret=secret&amp;grant_type=authorization_code&amp;code=0b621f05c59b474191394040f4444267' \"https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/token\"\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.wl8lH9.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/174-0.png\" alt=\"Kobito.wl8lH9.png\" \/><\/div>\n<p>\u6210\u529f\u6642\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u306f\u3053\u3093\u306a\u611f\u3058<\/p>\n<pre class=\"post-pre\"><code>{\r\n  \"refresh_token\": \"95a8bc4570f94ecf90dbe0fe451a3ed3\",\r\n  \"token_type\": \"bearer\",\r\n  \"access_token\": \"0e76c1fd21164f289c8f74daf49d5bf5\",\r\n  \"expires_in\": 7200\r\n}\r\n<\/code><\/pre>\n<h4>implicit flow<\/h4>\n<p>code flow\u304c\u3067\u304d\u3066\u308c\u3070\u7c21\u5358<\/p>\n<p>response_type = token\u306e\u5834\u5408<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'client_id=oauth-trial-application&amp;response_type=token&amp;scope=email&amp;provision_key=96b48acff71a4fe8a198a1771a7ffc9c&amp;authenticated_userid=oauthuser&amp;grunt_type=implicit' \"https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/authorize\"\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.FtCNIC.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/181-0.png\" alt=\"Kobito.FtCNIC.png\" \/><\/div>\n<p>\u30ec\u30b9\u30dd\u30f3\u30b9<\/p>\n<pre class=\"post-pre\"><code>{\r\n  \"redirect_uri\": \"https:\/\/www.getpostman.com\/oauth2\/callback#access_token=582c503605ee4e89a0c45e2b113eef83&amp;expires_in=7200&amp;token_type=bearer\"\r\n}\r\n<\/code><\/pre>\n<p>response_type = code\u306e\u5834\u5408<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'client_id=oauth-trial-application&amp;response_type=code&amp;scope=email&amp;provision_key=96b48acff71a4fe8a198a1771a7ffc9c&amp;authenticated_userid=oauthuser&amp;grunt_type=implicit' \"https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/authorize\"\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.SAfKRQ.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/186-0.png\" alt=\"Kobito.SAfKRQ.png\" \/><\/div>\n<p>\u30ec\u30b9\u30dd\u30f3\u30b9<\/p>\n<pre class=\"post-pre\"><code>{\r\n  \"redirect_uri\": \"https:\/\/www.getpostman.com\/oauth2\/callback?code=ec6e23952c2c4b5d9f5ab4d03ab9b9a4\"\r\n}\r\n<\/code><\/pre>\n<h4>resource owner password credentials<\/h4>\n<p>\u3053\u308c\u3082code flow\u3068\u540c\u3058\u611f\u3058\u3067\u4e8b\u524d\u306b\u30ed\u30b0\u30a4\u30f3ID\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u8a8d\u8a3c\u6e08\u307f\u524d\u63d0\u3002<br \/>\n\u8a8d\u8a3c\u304c\u6e08\u3093\u3060\u3089kong\u306bPOST\u3057\u3066token\u3092\u3082\u3089\u3046\u611f\u3058\u3002<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'client_id=oauth-trial-application&amp;client_secret=secret&amp;scope=email&amp;provision_key=96b48acff71a4fe8a198a1771a7ffc9c&amp;authenticated_userid=anystring&amp;username=anystring&amp;password=anystring&amp;grant_type=password' \"https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/token\"\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.hTU1SZ.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/192-0.png\" alt=\"Kobito.hTU1SZ.png\" \/><\/div>\n<p>\u5f53\u305f\u308a\u524d\u3068\u3044\u3048\u3070\u305d\u3046\u3060\u3051\u3069kong\u5074\u306b\u6e21\u3057\u3066\u3044\u308b<br \/>\nauthenticated_userid<br \/>\nusername<br \/>\npassword<br \/>\n\u306f\u691c\u8a3c\u3055\u308c\u306a\u3044\u3002<br \/>\nusername\u3068password\u306b\u95a2\u3057\u3066\u306f\u7701\u7565\u3057\u3066\u3082OK<\/p>\n<h4>refresh_token<\/h4>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.nZsutu.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/195-0.png\" alt=\"Kobito.nZsutu.png\" \/><\/div>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'client_id=oauth-trial-application&amp;client_secret=secret&amp;grant_type=refresh_token&amp;refresh_token=08ff72351d5740d59259995ca258affc' \"https:\/\/[your kong host]\/test-oauth2\/mockbin\/oauth2\/token\"\r\n<\/code><\/pre>\n<p>\u6210\u529f\u6642\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u306f\u3053\u3093\u306a\u611f\u3058<\/p>\n<pre class=\"post-pre\"><code>{\r\n  \"refresh_token\": \"2a122910eddb43c0bb9d7d78f0fda5b6\",\r\n  \"token_type\": \"bearer\",\r\n  \"access_token\": \"8770f201c00a495a99e66a2f9fb2023a\",\r\n  \"expires_in\": 7200\r\n}\r\n<\/code><\/pre>\n<h2>JWT\u8a8d\u8a3c\u304c\u5fc5\u8981\u306aAPI\u306e\u4f5c\u6210<\/h2>\n<h3>api\u306e\u4f5c\u6210<\/h3>\n<p>mockbin\u3067api mock\u3092\u4f5c\u6210<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.8EacdN.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/202-0.png\" alt=\"Kobito.8EacdN.png\" \/><\/div>\n<p>API\u3092KONG\u306b\u767b\u9332<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=mockbin-jwt&amp;upstream_url=http:\/\/mockbin.org\/bin\/f8090f01-3a0f-418c-b516-18a3df0498ba&amp;uris=\/test-jwt\/mockbin' \"http:\/\/[kong host name]:8001\/apis\"\r\n<\/code><\/pre>\n<h3>api\u306bjwt plugin\u3092\u9069\u7528<\/h3>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=jwt&amp;config.uri_param_names=jwt&amp;config.claims_to_verify=exp&amp;config.key_claim_name=iss&amp;config.secret_is_base64=false' \"http:\/\/[kong host name]:8001\/apis\/mockbin-jwt\/plugins\/\"\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.lx4EDr.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/207-0.png\" alt=\"Kobito.lx4EDr.png\" \/><\/div>\n<p>\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u3064\u3044\u3066\u88dc\u8db3<\/p>\n<div>\n<div class=\"post-table\">parameter\u8aac\u660e\u8a2d\u5b9a\u4f8bconfig.uri_param_namesjwt\u3092query\u3067\u6e21\u3059\u6642\u306ekey\u540djwtconfig.claims_to_verify<code>exp<\/code>\u304b<code>nbf<\/code>\u3092\u6307\u5b9a\u3067\u304d\u308b\u3002exp\u306a\u3089\u6709\u52b9\u671f\u9650\u8d85\u904e\u3001nbf\u306a\u3089\u6709\u52b9\u671f\u9650\u524d\u304b\u306e\u30c1\u30a7\u30c3\u30af\u3092\u3059\u308b\uff08\u591a\u5206\uff09exp,nbfconfig.key_claim_name\u5f8c\u3067\u767a\u884c\u3059\u308bcredentials\u306ekey\u306b\u8a2d\u5b9a\u3057\u305f\u5024\u3092\u683c\u7d0d\u3059\u308bkey\u540d\u3002\u901a\u5e38iss\u306b\u3057\u3066\u304a\u304fissconfig.secret_is_base64credentials\u306esecret\u3092base64\u3059\u308b\u304b\u3069\u3046\u304b\u3002secret\u304cbynary\u306e\u5834\u5408\u3002\u901a\u5e38falsefalse<\/div>\n<\/div>\n<h3>consumers\u306e\u4f5c\u6210<\/h3>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'username=jwtuser&amp;custom_id=A01003' \"http:\/\/[kong host name]:8001\/consumers\"\r\n<\/code><\/pre>\n<h3>JWT credentials\u306e\u4f5c\u6210<\/h3>\n<div>\n<div class=\"post-table\">parameter\u8aac\u660e\u8a2d\u5b9a\u4f8bkeyJWT\u767a\u884c\u6642\u306biss\u306b\u8a2d\u5b9a\u3059\u308b\u540d\u524d\u3068\u540c\u3058\u3082\u306e\u3092\u8a2d\u5b9a\u3059\u308boauth-serveralgorithm\u6697\u53f7\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 RS256, HS256, ES256\u304c\u9078\u3079\u308bRS256rsa_public_key\u516c\u958b\u9375 RS256\u306a\u3089 <code>-----BEGIN PUBLIC KEY-----<\/code>\u304b\u3089 \u7701\u7565\u6642\u81ea\u52d5\u751f\u6210\u4e0b\u8a18\u53c2\u7167secretHS256, ES256\u306e\u6642\u306eseacret\u6587\u5b57\u5217\u3001\u7701\u7565\u6642\u81ea\u52d5\u751f\u6210\u4e0b\u8a18\u53c2\u7167<\/div>\n<\/div>\n<pre class=\"post-pre\"><code>\r\npostman\u304b\u3089\u3060\u3068\u3046\u307e\u304f\u53e9\u3051\u306a\u304b\u3063\u305f\r\n\u516c\u958b\u9375\u3068\u79d8\u5bc6\u9375\u3092\u5165\u308c\u308b\u306e\u306f\u30b3\u30c4\u304c\u3044\u308b\u6a21\u69d8\r\n[\u53c2\u8003](https:\/\/github.com\/Mashape\/kong\/issues\/1458)\r\n\r\ncurl\u3067\u53e9\u304f\u30a4\u30e1\u30fc\u30b8\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u611f\u3058\r\n\r\n<\/code><\/pre>\n<p>curl -X POST &#8220;http:\/\/[kong host name]:8001\/consumers\/jwtuser\/jwt&#8221; &#8211;data-urlencode &#8220;key=oauth-server&#8221; &#8211;data-urlencode &#8220;algorithm=RS256&#8221; &#8211;data-urlencode &#8220;rsa_public_key=<br \/>\n&#8212;&#8211;BEGIN PUBLIC KEY&#8212;&#8211;<br \/>\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvc6AuzxgawTudoGXChgl<br \/>\n&#8230;..<br \/>\n0MYRedkNsYab1kpSYYyDxlhP6H\/l0saI817z9U8PPasjBSahllPQxnJJceojh3SC<br \/>\nBQIDAQAB<br \/>\n&#8212;&#8211;END PUBLIC KEY&#8212;&#8211;<br \/>\n&#8221;<\/p>\n<pre class=\"post-pre\"><code>\r\n\u307e\u305f\u306f\u76f4\u63a5\u9375\u30d5\u30a1\u30a4\u30eb\u3092\u9001\u308b\u6307\u5b9a\u3082\u53ef\u80fd\uff08multipart\u306b\u306a\u308b\uff09\r\n\r\n<\/code><\/pre>\n<p>curl -X POST http:\/\/[kong host name]:8001\/consumers\/{consumer}\/jwt \\<br \/>\n-F &#8220;rsa_public_key=@\/path\/to\/public_key.pem&#8221; \\<br \/>\n&#8220;`<\/p>\n<h4>API\u306e\u5b9f\u884c<\/h4>\n<p>\u6b8b\u5ff5\u306a\u304c\u3089KONG\u306b\u306fJWT\u767a\u884c\u6a5f\u80fd\u304c\u306a\u3044\u6a21\u69d8\u3002<br \/>\n\u5225\u306e\u8a8d\u8a3c\u30b5\u30fc\u30d0\u7b49\u3067\u767a\u884c\u3057\u305fJWT\u3092\u4f7f\u3063\u3066\u8a66\u3059<\/p>\n<p>\u3053\u306e\u6642\u3001\u767a\u884c\u3057\u305fJWT\u5185\u306f\u4ee5\u4e0b\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3059\u5fc5\u8981\u304c\u3042\u308b<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u79d8\u5bc6\u9375\u30fb\u516c\u958b\u9375\u306e\u30ad\u30fc\u30da\u30a2\u306b\u3066\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">kong\u306bJWT plugin\u3092\u8ffd\u52a0\u3057\u305f\u6642\u3001config.key_claim_name \u306b\u6307\u5b9a\u3057\u305fkey\u540d\u306eclaim\u304c\u3042\u308b\u3053\u3068(\u4f8b\u3067\u306fiss)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u4e0a\u8a18claim\u306e\u5024\u304ckong\u306bJWT credentials\u3092\u767b\u9332\u3057\u305f\u6642\u306bkey\u306b\u6307\u5b9a\u3057\u305f\u5024\u304c\u30bb\u30c3\u30c8\u3055\u308c\u3066\u3044\u308b\u3053\u3068<\/ul>\n<p>\u3053\u308c\u306fKONG\u5074\u3067JWT\u306e\u691c\u8a3c\u6642\u306b\u516c\u958b\u9375\u306e\u691c\u8a3c\uff0b\u03b1\u306e\u8981\u7d20\u3068\u3057\u3066\u691c\u8a3c\u3055\u308c\u308b\u6a21\u69d8\u3002<br \/>\n\u901a\u5e38\u306fJWT\u767a\u884c\u5074\u3067\u30bb\u30c3\u30c8\u3055\u308c\u308biss\u306e\u5024\u3092\u4e88\u3081\u5165\u624b\uff08\u6c7a\u5b9a\uff09\u3057\u3066\u304a\u304d<br \/>\nKONG\u5074\u3067JWT plugin\u306e\u8ffd\u52a0\u3001JWT credentials\u306e\u8ffd\u52a0\u306e\u6642\u306b\u30bb\u30c3\u30c8\u3057\u3066\u3044\u304f\u611f\u3058<\/p>\n<p>API\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u306fBearer\u306bJWT\u3092\u8a2d\u5b9a\u3057\u3066\u5b9f\u884c\u3059\u308c\u3070OK<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"Kobito.pnM47O.png\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/224-0.png\" alt=\"Kobito.pnM47O.png\" \/><\/div>\n<pre class=\"post-pre\"><code>curl -X GET -H \"Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJzcHJpbmctb2F1dGgtc2VydmVyLXN1YiIsImF1ZCI6WyJzcHJpbmctYm9vdC1hcHBsaWNhdGlvbiJdLCJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbInJlYWQiXSwiaXNzIjoic3ByaW5nLW9hdXRoLXNlcnZlci1pc3MiLCJleHAiOjE0OTMyNjI1ODYsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1VTRVIiXSwianRpIjoiNjJhZTU1MmUtYWNlNy00ZWI4LWExY2YtNWYxOTIxZTUyMDY1IiwiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsImNsaWVudF9pZCI6InB1YmxpYyJ9.XLOETjeE9Ud9pnAx6ChYryd8yeiqCEd8KPJLlS_9-U62YkvrTFVfqQdI8-JhbWWEVvW76B1TWLMUfLZ--X4NACkLOeKokXtBKpEsJ9Y-nbiyiRum-ysb8w819csTW9kV6mT70ZEwT5b_1Mo9jdRpxEPPZM1hMfSpwN50W9exZFZ4vn_vTba6JFQBQt4p_OvVqfdmsLrPIAlSYtB13100TY0CVHdLWpDxwjbhJPPcF6TVhgdJlpqjyEY5NXUzRv3A6RUfAD5NhZxWrgnZTVN_Jlnu1GVkuN3oCqj_1tuGYdMF6YPb4ToT344Xu1Qq4cHgMPYF2ns3xKD4U3w3lkNppw\" \"http:\/\/[kong host name]\/test-jwt\/mockbin\"\r\n<\/code><\/pre>\n<h4>\u88dc\u8db3<\/h4>\n<p>KONG\u4e0a\u3067JWT\u8a8d\u8a3c\u5f8c\u3001API\u30b5\u30fc\u30d0\u5074\u306bproxy\u3059\u308b\u969b\u4ee5\u4e0b\u306e\u60c5\u5831\u304cHeader\u306b\u57cb\u3081\u8fbc\u307e\u308c\u308b<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">X-Consumer-ID<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">X-Consumer-Custom-ID(\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">X-Consumer-Username(\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">X-Anonymous-Consumer(\u8a8d\u8a3c\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001true\u304c\u5165\u308b)<\/ul>\n<h1>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u7cfb\u306eplugin<\/h1>\n<h2>ACL<\/h2>\n<p>\u3060\u3044\u305f\u3044\u6982\u8981\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u611f\u3058<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">KONG\u767b\u9332\u6e08\u307f\u306eAPI\u6bce\u306b\u8a2d\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">consumers\u306bgroup\u3092\u8a2d\u5b9a\u3057\u3001API\u306b\u5bfe\u3057\u3066group\u306e\u5229\u7528\u53ef\u30fb\u4e0d\u53ef\u3092\u8a2d\u5b9a\u3059\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">ACL\u3068\u306f\u5225\u306bconsumers\u3092\u7279\u5b9a\u3059\u308b\u305f\u3081\u306e\u8a8d\u8a3cplugin\u306e\u8a2d\u5b9a\u3082\u5fc5\u8981\uff08\u4eca\u56dekey-auth\u3067\u5b9f\u65bd\u3057\u305f\u304cOAuth, JWT\u3067\u3082\u3044\u3051\u308b\u306f\u305a\uff09<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">whitelist\u306b\u5165\u3063\u3066\u3044\u306a\u3044 or blacklist\u306b\u5165\u3063\u3066\u3044\u308b consumer\u306e\u5834\u5408\u3001403 forbidden\u3067\u8fd4\u308b<\/ul>\n<p>\u4ee5\u4e0b\u8a66\u3057\u305f\u7d50\u679c<\/p>\n<h3>ACL\u3092\u8a66\u3059\u7528\u306eAPI\u3092\u4f5c\u6210<\/h3>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=test-acl&amp;upstream_url=http:\/\/mockbin.org\/bin\/4ed664ea-cf51-4f0e-89ad-a8f86c3f8841&amp;uris=\/test-acl\/mockbin' \"http:\/\/[kong host name]:8001\/apis\"\r\n<\/code><\/pre>\n<h3>consumers\u306e\u8ffd\u52a0<\/h3>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'username=acltest&amp;custom_id=A01005' \"http:\/\/[kong host name]:8001\/consumers\"\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'username=acltest2&amp;custom_id=A01006' \"http:\/\/[kong host name]:8001\/consumers\"\r\n<\/code><\/pre>\n<h3>api\u306bkey-auth\u3092\u9069\u7528<\/h3>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=key-auth' \"http:\/\/[kong host name]:8001\/apis\/test-acl\/plugins\/\"\r\n<\/code><\/pre>\n<h3>consumers\u306bkey-auth\u306ekey\u3092\u767a\u884c<\/h3>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'key=acltest-key' \"http:\/\/[kong host name]:8001\/consumers\/acltest\/key-auth\/\"\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'key=acltest2-key' \"http:\/\/[kong host name]:8001\/consumers\/acltest2\/key-auth\/\"\r\n<\/code><\/pre>\n<h3>consumers\u306bgroup\u3092\u8ffd\u52a0<\/h3>\n<p>\/consumers\/[consumer name]\/acls \u306b\u5bfe\u3057\u3066POST\u3059\u308b<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'group=group1' \"http:\/\/[kong host name]:8001\/consumers\/acltest\/acls\"\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'group=group2' \"http:\/\/[kong host name]:8001\/consumers\/acltest2\/acls\"\r\n<\/code><\/pre>\n<h3>API\u306bACL\u3092\u9069\u7528\u3059\u308b<\/h3>\n<p>group1\u3092whitelist\u306b\u5165\u308c\u308b\u3002<br \/>\n\u306a\u304awhitelist\u3068blacklist\u306f\u3069\u3061\u3089\u304b\u3057\u304b\u6307\u5b9a\u3067\u304d\u306a\u3044\u3002<br \/>\n\u307e\u305f\u8907\u6570\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u6307\u5b9a\u3059\u308b\u5834\u5408\u306fvalue\u3092\u30ab\u30f3\u30de\u533a\u5207\u308a\u3067\u5165\u308c\u308b<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=acl&amp;config.whitelist=group1' \"http:\/\/[kong host name]:8001\/apis\/test-acl\/plugins\"\r\n<\/code><\/pre>\n<h3>API\u3092key-auth\u5229\u7528\u3057\u3066\u5b9f\u884c\u3059\u308b<\/h3>\n<p>whitelist\u306b\u5165\u3063\u3066\u3044\u308bgroup\u306b\u5c5e\u3059\u308bconsumer\u306e\u5834\u5408\u2192OK<\/p>\n<pre class=\"post-pre\"><code>curl -X GET -H \"apikey: acltest-key\" \"http:\/\/[kong host name]\/test-acl\/mockbin\"\r\n<\/code><\/pre>\n<p>whitelist\u306b\u5165\u3063\u3066\u3044\u306a\u3044group\u306b\u5c5e\u3059\u308bconsumer\u306e\u5834\u5408\u2192403 forbidden<\/p>\n<pre class=\"post-pre\"><code>curl -X GET -H \"apikey: acltest2-key\" \"http:\/\/[kong host name]\/test-acl\/mockbin\"\r\n<\/code><\/pre>\n<h2>CORS<\/h2>\n<p>CORS\u7528\u30d8\u30c3\u30c0\u30fc\u3082KONG\u3067\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b<br \/>\nAPI\u306b\u5bfe\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u611f\u3058(\u672a\u691c\u8a3c\u3060\u304c\u307b\u307c\u3053\u306e\u307e\u307e\u306e\u306f\u305a)<\/p>\n<pre class=\"post-pre\"><code>curl -X POST -H \"Content-Type: application\/x-www-form-urlencoded\" -d 'name=cors&amp;config.origins=mockbin.com&amp;config.methods=GET%2C POST&amp;config.headers=Accept%2C Accept-Version%2C Content-Length%2C Content-MD5%2C Content-Type%2C Date%2C X-Auth-Token&amp;config.exposed_headers=X-Auth-Token&amp;config.credentials=true&amp;config.max_age=3600' \"http:\/\/[kong host name]:8001\/apis\/test-acl\/plugins\"\r\n<\/code><\/pre>\n<blockquote><p>2017\/3\/28 0.10.1 update\u306b\u3088\u308aconfig.origin\u30d1\u30e9\u30e1\u30fc\u30bf\u304cconfig.origins\u306b\u306a\u308a\u8907\u6570\uff08\u30ab\u30f3\u30de\u533a\u5207\u308a\uff09\u304c\u53ef\u80fd\u306b\u306a\u3063\u3066\u3044\u308b<\/p><\/blockquote>\n<h3>CORS plugin\u306e\u5236\u9650\u4e8b\u9805<\/h3>\n<p>api\u3092uri\u6307\u5b9a\u3057\u3066\u3044\u308b\u6642\u306e\u307fCORS pluging\u304c\u4f7f\u3048\u308b<br \/>\napi\u3092hosts\u6307\u5b9a\u3057\u3066\u3044\u308b\u6642\u306f\u4f7f\u3048\u306a\u3044<\/p>\n<h2>IP\u5236\u9650 plugin<\/h2>\n<p>API\u306b\u5bfe\u3057\u3066\u8a2d\u5b9a\u3059\u308b<br \/>\n\u672a\u5b9f\u65bd\u3060\u304c\u304d\u3063\u3068\u3053\u306e\u307e\u307e\u306a\u306e\u3067\u3068\u308a\u3042\u3048\u305a\u516c\u5f0f\u3092\u30b3\u30d4\u30fc\u3057\u3066\u304a\u304f<\/p>\n<pre class=\"post-pre\"><code>curl -X POST http:\/\/[kong host name]:8001\/apis\/{api}\/plugins \\\r\n    --data \"name=ip-restriction\" \\\r\n    --data \"config.whitelist=54.13.21.1, 143.1.0.0\/24\"\r\n\r\n<\/code><\/pre>\n<p>\u306a\u304a\u3001\u540c\u6642\u306bconsumer_id\u3092\u30d1\u30e9\u30e1\u30bf\u306b\u6e21\u3059\u3053\u3068\u3067\u7279\u5b9a\u306econsumer\u306b\u9650\u308b\u3053\u3068\u3082\u53ef\u80fd\u3089\u3057\u3044\u3002<br \/>\n\uff08\u5f53\u7136\u8a8d\u8a3cplugin\u306e\u4f75\u7528\u304c\u5fc5\u8981\uff09<\/p>\n<h2>bot\u5236\u9650plugin<\/h2>\n<p>rule\u306b\u5247\u3063\u3066bot\u304b\u3089\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u306f\u3058\u304fplugin<br \/>\n\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6709\u540d\u306abot\u306f\u30eb\u30fc\u30eb\u306b\u767b\u9332\u3055\u308c\u3066\u3044\u308b \u30c7\u30d5\u30a9\u30eb\u30c8\u30eb\u30fc\u30eb<\/p>\n<p>\u30eb\u30fc\u30eb\u306e\u8ffd\u52a0\u306fconfig.whitelist\u304bconfig.blacklist\u306bUser-Agent\u30d8\u30c3\u30c0\u30fc\u306e\u6587\u5b57\uff08\u6b63\u898f\u8868\u73fe\u53ef\u80fd\uff09\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\u308b<\/p>\n<p>\u3053\u308c\u3082\u516c\u5f0f\u3092\u30b3\u30d4\u30fc\u3060\u3051<\/p>\n<pre class=\"post-pre\"><code>curl -X POST http:\/\/kong:8001\/apis\/{api}\/plugins \\\r\n    --data \"name=bot-detection\"\r\n<\/code><\/pre>\n<h1>Traffic\u7cfb\u306eplugin<\/h1>\n<h2>Rate Limiting plugin<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u6d41\u91cf\u5236\u9650\u306eplugin<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">API\u6bce\u306b\u8a2d\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5e74\u30fb\u6708\u30fb\u65e5\u30fb\u6642\u30fb\u5206\u30fb\u79d2\u6bce\u306b\u6700\u5927\u30a2\u30af\u30bb\u30b9\u56de\u6570\u3092\u6307\u5b9a\u3067\u304d\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">consumer_id\u3092\u4e00\u7dd2\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067consumer\u6bce\u306b\u8a2d\u5b9a\u3067\u304d\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>\u3053\u308c\u306b\u3088\u308a\uff11\u65e5100\u30a2\u30af\u30bb\u30b9\u7b49\u306e\u5236\u5fa1\u304c\u7c21\u5358\u3067\u8ab2\u91d1\u5bfe\u8c61\uffe5\u306b\u4f7f\u3048\u308b\uff08\u304b\u3082\uff09<\/p>\n<p>\u8a2d\u5b9a\u5024\u3092\u8d85\u3048\u305f\u30a2\u30af\u30bb\u30b9\u304c\u3042\u3063\u305f\u5834\u5408\u306f429\u3067\u8fd4\u5374\u3059\u308b<br \/>\n\u6b8b\u308a\u4f55\u56de\u304b\u306fResponse\u306eHttp Header\u306b\u8fd4\u5374\u3055\u308c\u308b\u306e\u3067\u78ba\u8a8d\u3067\u304d\u308b<\/p>\n<p>\u306a\u304a\u3001\u30ab\u30a6\u30f3\u30bf\u30fc\u306e\u305f\u3081\u306e\u30dd\u30ea\u30b7\u30fc\u304c\uff13\u3064\u7528\u610f\u3055\u308c\u3066\u3044\u308b<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">cluster : datastore\u3092\u4f7f\u3063\u3066KONG\u306e\u4ed6\u30ce\u30fc\u30c9\u3068\u5171\u6709(\u304a\u3059\u3059\u3081)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">local : local\u30e1\u30e2\u30ea\u30fc\u3067\u30ab\u30a6\u30f3\u30c8\u3001\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u3057\u3066\u3044\u308b\u3068\u5225\u3005\u30ab\u30a6\u30f3\u30c8<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">redis : \u5225\u9014redis\u3092\u7acb\u3061\u4e0a\u3052\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u4ed6\u3067\u591a\u91cd\u5316\u3057\u305fredis\u304c\u3042\u308c\u3070\u4f7f\u3046\u304b\u3082\uff1f<\/ul>\n<pre class=\"post-pre\"><code>curl -X POST http:\/\/kong:8001\/apis\/{api}\/plugins \\\r\n    --data \"name=rate-limiting\" \\\r\n    --data \"config.second=5\" \\\r\n    --data \"config.hour=10000\" \r\n<\/code><\/pre>\n<p>\u8a2d\u5b9a\u3067\u304d\u308bconfig\u5024\u306e\u8aac\u660e<\/p>\n<div>\n<div class=\"post-table\">key\u8aac\u660ename<code>rate-limiting<\/code>\u56fa\u5b9aconsumer_id\u7701\u7565\u53ef\u3001\u6307\u5b9a\u3059\u308b\u5834\u5408\u8a8d\u8a3cplugin\u306e\u4f75\u7528\u304c\u5fc5\u8981config.second\u6700\u5927\u30a2\u30af\u30bb\u30b9\u6570\u3092\u6307\u5b9aconfig.minute\u6700\u5927\u30a2\u30af\u30bb\u30b9\u6570\u3092\u6307\u5b9aconfig.hour\u6700\u5927\u30a2\u30af\u30bb\u30b9\u6570\u3092\u6307\u5b9aconfig.day\u6700\u5927\u30a2\u30af\u30bb\u30b9\u6570\u3092\u6307\u5b9aconfig.month\u6700\u5927\u30a2\u30af\u30bb\u30b9\u6570\u3092\u6307\u5b9aconfig.year\u6700\u5927\u30a2\u30af\u30bb\u30b9\u6570\u3092\u6307\u5b9aconfig.limit_byconsumer, credential, ip\u304c\u9078\u629e\u3067\u304d\u308b\u3002\u6307\u5b9a\u3057\u305f\u5bfe\u8c61\u304climit over\u3057\u305f\u6642\u306b\u30a8\u30e9\u30fc\u3068\u3059\u308b\u3002consumer, credential\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u81ea\u52d5\u7684\u306bip\u306b\u306a\u308bconfig.policylocal or cluster or redis \u203b\u4e0a\u8a18\u8aac\u660e\u53c2\u7167config.fault_toleranttrue\u306b\u3059\u308b\u3068datastore\u304c\u52d5\u3044\u3066\u3044\u306a\u3044\u5834\u5408\u3001rate limit\u306f\u901a\u904e\u3059\u308b\u3088\u3046\u306b\u306a\u308b\u3002false\u306b\u3059\u308b\u3068\u3059\u3050\u3055\u307e500\u3067\u8fd4\u3059config.redis_hostconfig.policy\u304credis\u306e\u5834\u5408\u306b\u6307\u5b9aconfig.redis_portconfig.policy\u304credis\u306e\u5834\u5408\u306b\u6307\u5b9aconfig.redis_passwordconfig.policy\u304credis\u306e\u5834\u5408\u306b\u6307\u5b9aconfig.redis_timeoutconfig.policy\u304credis\u306e\u5834\u5408\u306b\u6307\u5b9aconfig.redis_databaseconfig.policy\u304credis\u306e\u5834\u5408\u306b\u6307\u5b9a<\/div>\n<\/div>\n<p>Response\u306e Http Header\u306b\u8fd4\u5374\u3055\u308c\u308b\u6b8b\u308a\u56de\u6570\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308b<\/p>\n<pre class=\"post-pre\"><code>X-RateLimit-Limit-Second: 5\r\nX-RateLimit-Remaining-Second: 4\r\nX-RateLimit-Limit-Minute: 10\r\nX-RateLimit-Remaining-Minute: 9\r\n<\/code><\/pre>\n<h2>Request Size Limiting<\/h2>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30b5\u30a4\u30ba\u5236\u9650\u3092\u3059\u308bplugin<br \/>\nDOS\u653b\u6483\u3092\u9632\u3050\u610f\u5473\u3067\u3082\u5168API\u3078\u306e\u9069\u7528\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u308b<\/p>\n<pre class=\"post-pre\"><code>curl -X POST http:\/\/[kong host name]:8001\/apis\/{api}\/plugins \\\r\n    --data \"name=request-size-limiting\" \\\r\n    --data \"config.allowed_payload_size=128\"\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>\u307e\u305f\u3001\u4e0a\u8a18\u4f8b\u306b\u306f\u306a\u3044\u304c```consumer_id```\u3082\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\r\n\r\n# Logging\u7cfb\u306eplugin\r\n\r\nLog\u306e\u51fa\u529b\u5148\u6bce\u306bplugin\u304c\u5206\u304b\u308c\u3066\u3044\u308b\r\n\r\n| plugin | \u8aac\u660e |\r\n|--------|--------|\r\n| TCP       | TCP\u3067\u30ed\u30b0\u3092\u9001\u4fe1\u3059\u308b \u30ed\u30b0\u306fJSON\u5f62\u5f0f       |\r\n| UDP       | UDP\u3067\u30ed\u30b0\u3092\u9001\u4fe1\u3059\u308b \u30ed\u30b0\u306fJSON\u5f62\u5f0f       |\r\n| HTTP       | HTTP(POST\u306a\u3069)\u3067\u30ed\u30b0\u3092\u9001\u4fe1\u3059\u308b \u30ed\u30b0\u306fJSON\u5f62\u5f0f       |\r\n| FILE       | \u30d5\u30a1\u30a4\u30eb\u306b\u30ed\u30b0\u3092\u51fa\u529b\u3059\u308b \u30ed\u30b0\u306fJSON\u5f62\u5f0f       |\r\n| SYSLOG       | syslog\u306b\u30ed\u30b0\u3092\u51fa\u529b\u3059\u308b \u30ed\u30b0\u306fJSON\u5f62\u5f0f       |\r\n| StatsD       | Collectd\u306b\u30ed\u30b0\u3092\u51fa\u529b\u3059\u308b Statsd plugin\u5f62\u5f0f |\r\n| Loggly       | UDP\u3067Loggly\u306b\u30ed\u30b0\u3092\u51fa\u529b\u3059\u308b       |\r\n\r\n\u3044\u305a\u308c\u3082\u4ed6log\u30b5\u30fc\u30d3\u30b9\u3068\u306e\u9023\u643a\u304c\u524d\u63d0\r\n\u3068\u308a\u3042\u3048\u305aFILE\u51fa\u529b\u3060\u3051\u8a66\u3059\r\n\r\n<\/code><\/pre>\n<p>curl -X POST http:\/\/[kong host name]:8001\/apis\/{api}\/plugins \\<br \/>\n&#8211;data &#8220;name=file-log&#8221; \\<br \/>\n&#8211;data &#8220;config.path=\/tmp\/kong-file.log&#8221;<br \/>\n&#8220;`<\/p>\n<p>API\u3092\u5b9f\u884c\u3059\u308b\u3068\u305d\u306e\u90fd\u5ea6\u6307\u5b9a\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3078JSON\u5f62\u5f0f\u306e\u30ed\u30b0\u304c\u51fa\u529b\u3055\u308c\u305f<\/p>\n<h1>Transform\u7cfb\u306ePlugin<\/h1>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\u30fb\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u5185\u5bb9\u3092\u52a0\u5de5\u3059\u308bplugin<\/p>\n<h2>Request Transformer<\/h2>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\u306eheader, body, query\u306b\u3064\u3044\u3066\u30d1\u30e9\u30e1\u30fc\u30bf\u3092add, remove\u3067\u304d\u308b<\/p>\n<h2>Response Transformer<\/h2>\n<p>\u30ec\u30b9\u30dd\u30f3\u30b9\u306eheader, body, query\u306b\u3064\u3044\u3066\u30d1\u30e9\u30e1\u30fc\u30bf\u3092add, remove\u3067\u304d\u308b<br \/>\n\u82e5\u5e72\u306ejson\u306e\u52a0\u5de5\uff08\u8ffd\u52a0\u3001\u524a\u9664\u304f\u3089\u3044\uff09\u3082\u3067\u304d\u308b\u307f\u305f\u3044<br \/>\n\u2192parse\u3057\u3066\u52a0\u5de5\u306b\u306a\u308b\u306e\u3067\u30ec\u30b9\u30dd\u30f3\u30b9\u30fb\u30ea\u30bd\u30fc\u30b9\u5f71\u97ff\u3042\u308a<\/p>\n<h2>Correlation ID<\/h2>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\uff08\u3068\u30ec\u30b9\u30dd\u30f3\u30b9\uff09\u306bUUID\u7b49\u306e\u30e6\u30cb\u30fc\u30af\u306aID\u3092Header\u306b\u8ffd\u52a0\u3059\u308b<br \/>\n\u30ed\u30b0\u7b49\u3067\u30ea\u30af\u30a8\u30b9\u30c8\u5358\u4f4d\u306e\u30e6\u30cb\u30fc\u30afID\u304c\u78ba\u8a8d\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\uff08\u4f7f\u3044\u307f\u3061\uff1f\uff09<\/p>\n<h1>KONG\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u5316<\/h1>\n<p>KONG\u3092\u8907\u6570node\u306b\u3057\u3066\uff08\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u306f\u540c\u3058\uff09\u904b\u7528\u3059\u308b\u5834\u5408<br \/>\n\u4ee5\u4e0b\u306e\u30af\u30e9\u30b9\u30bf\u8a2d\u5b9a\u3092\u3057\u306a\u304f\u3066\u306f\u3044\u3051\u306a\u3044<\/p>\n<blockquote><p>\u516c\u5f0f\u306b\u8a18\u8f09\u304c\u3042\u308b\u3068\u304a\u308a\u3001\u8907\u6570node\u5316\u3057\u305f\u969b\u306b\u30af\u30e9\u30b9\u30bf\u5316\u3092\u3057\u306a\u3044\u3068\u30b7\u30f3\u30af\u30ed\u3055\u308c\u306a\u3044\u30c7\u30fc\u30bf\u304c\u767a\u751f\u3057\u554f\u984c\u306b\u3064\u306a\u304c\u308b\u3068\u306e\u3053\u3068<\/p><\/blockquote>\n<p>\u30af\u30e9\u30b9\u30bf\u5316\u306e\u8a2d\u5b9a\u81ea\u4f53\u306f\u7c21\u5358\u3060\u304c\u3001\u5404node\u304c\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u4e0a\u540c\u4e00\u30bb\u30b0\u30e1\u30f3\u30c8\u5185\u306b\u5c5e\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306fIPv4\u306b\u3066\u7279\u5b9a\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308b\uff08NAT\u7b49\u3092\u901a\u3055\u306a\u3044\u3001NAT\u3057\u3066\u3044\u308b\u5834\u5408post7946\u306e\u30d5\u30a9\u30ef\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u5fc5\u8981\uff08\u672a\u691c\u8a3c\uff09\uff09<\/p>\n<p>\u4eca\u56de\u306f\u5225\u306eEC2\u306bKONG\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001IP\u3082\u5225\u306e\u3082\u306e\u3092\u7acb\u3066\u3066\u8a66\u3059<\/p>\n<p>\u307e\u305f\u3042\u304f\u307e\u3067KONG\u9593\u306e\u6574\u5408\u3092\u53d6\u308b\u3060\u3051\u306e\u6a5f\u80fd\u3067\u3001node\u9593\u306e\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0\u7b49\u306f\u5225\u9014\u7528\u610f\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b<\/p>\n<h2>\u30af\u30e9\u30b9\u30bf\u5316\u8a2d\u5b9a<\/h2>\n<h3>port7946\u306e\u958b\u653e<\/h3>\n<p>\u5168\u30ce\u30fc\u30c9\u3067port7946\u3067\u306e\u758e\u901a\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b<br \/>\n\u4eca\u56de\u306fEC2\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306b\u3066port7946\u3092\u8a31\u53ef\uff08\u5168\u30ce\u30fc\u30c9\uff09<\/p>\n<h3>\u5225EC2\u306bKONG\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n<p>\u4e0a\u8ff0\u3057\u305f\u624b\u9806\u3069\u304a\u308a\u3001datastore(postgres)\u306f\u4e0d\u8981\u3001kong start\u3059\u308b\u524d\u306b<br \/>\n\u4ee5\u4e0b\u306e\u3068\u304a\u308akong.conf\u3092\u8a2d\u5b9a\u3059\u308b<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2(postgres)\u306f\u5168\u30ce\u30fc\u30c9\u540c\u3058\u3082\u306e\u3092\u6307\u3059<\/ul>\n<\/li>\n<\/ul>\n<p>cluster_advertise\u306b[\u81ea\u30b5\u30fc\u30d0\u306eip(\u57fa\u672cprivate ip\u3067\u306a\u3044\u3082\u306e)]:7946 \u3092\u8a2d\u5b9a\u3059\u308b\u2192\u5168\u30ce\u30fc\u30c9\u306ekong.conf\u306b\u8a2d\u5b9a<\/p>\n<p>kong start\u3067\u53cd\u6620\uff08\u5168\u30ce\u30fc\u30c9\uff09\u3001\u65e2\u306b\u7a3c\u50cd\u3057\u3066\u3044\u308bkong\u306fkong restart<\/p>\n<p>kong reload\u3067\u306f\u53cd\u6620\u3057\u306a\u3044<\/p>\n<h3>\u30af\u30e9\u30b9\u30bf\u5316\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d<\/h3>\n<p>kong cluster reachability \u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5168\u30ce\u30fc\u30c9\u3092\u78ba\u8a8d\u3067\u304d\u308b<\/p>\n<pre class=\"post-pre\"><code>Total members: 2, live members: 2\r\nStarting reachability test...\r\nSuccessfully contacted all live nodes\r\n<\/code><\/pre>\n<p>\u307e\u305fkong cluster members \u3067\u4e00\u89a7\u3068\u72b6\u614b\u3092\u78ba\u8a8d\u3067\u304d\u308b<\/p>\n<pre class=\"post-pre\"><code>ip-172-31-10-200_0.0.0.0:7946_b5bfea301c864406bc0b4878dfe2e104  xxx.xxx.xxx.xxx:7946    alive\r\nip-172-31-5-21_0.0.0.0:7946_b3ad232a0795474786bc9c7522ab0650    xxx.xxx.xxx.xxx:7946    alive\r\n<\/code><\/pre>\n<h1>\u3064\u307e\u308a\u3069\u3053\u308d<\/h1>\n<h2>KONG\u306e\u30ed\u30b0\u306f\u3069\u3053<\/h2>\n<p>\/etc\/kong\/kong.conf \u306e\u4e2d\u306e prefix \u3067\u6307\u5b9a\u3057\u3066\u3044\u308b\u30d1\u30b9\u304c<br \/>\nKONG\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068\u306a\u308b\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u3060\u3068 \/usr\/local\/kong \uff09<\/p>\n<p>KONG\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u914d\u4e0b\u306elogs\u914d\u4e0b\u306b\u30ed\u30b0\u304c\u51fa\u529b\u3055\u308c\u308b<\/p>\n<h2>DNS\u30a8\u30e9\u30fc<\/h2>\n<p>\u901a\u5e38\u306eDNS\u89e3\u6c7a\u3067\u304d\u306a\u3044\u30ea\u30e2\u30fc\u30c8\u30db\u30b9\u30c8\u3078\u63a5\u7d9a\u3059\u308b\u6642\u3001KONG\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebOS\u306e<br \/>\n\/etc\/hosts \u306a\u3069\u3092\u5229\u7528\u3059\u308b\u5834\u5408\u2192hosts\u7de8\u96c6\u5f8c\u306bKONG\u518d\u8d77\u52d5\u304c\u5fc5\u8981<\/p>\n<p>\/etc\/hosts \u3092\u4fee\u6b63\u3057\u305f\u3042\u3068KONG\u306e\u518d\u8d77\u52d5\u3092\u3057\u306a\u3044\u3068KONG\u304b\u3089\u306fDNS\u30a8\u30e9\u30fc\u306e\u307e\u307e<\/p>\n<h2>Cookie\u3092\u4f7f\u3046\u30b5\u30a4\u30c8\u306e\u5834\u5408<\/h2>\n<p>api\u3092\u8ffd\u52a0\u3059\u308b\u969b\u306b preserve_host \u3092true\u306b\u8a2d\u5b9a\u3057\u3066\u304a\u304f<br \/>\n\u3067\u306a\u3044\u3068upstream\u5074\u306eURL\u3067\u767a\u884c\u3057\u305fcookie\u304c<br \/>\n\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u8fd4\u5374\u3055\u308c\u3066\u3057\u307e\u3046<\/p>\n","protected":false},"excerpt":{"rendered":"<p>KONG\u3068\u306f \u516c\u5f0f\u8aad\u3081\u3063\u3066\u306e\u306f\u304a\u3044\u3068\u3044\u3066 \u565b\u307f\u7815\u3044\u3066\u8aac\u660e\u3059\u308b\u3068 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3092\u69cb\u7bc9\u3059\u308b\u6642\u306eAPI Gate [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-50580","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>KONG\u3053\u3068\u306f\u3058\u3081 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/kong\u3053\u3068\u306f\u3058\u3081\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"KONG\u3053\u3068\u306f\u3058\u3081\" \/>\n<meta property=\"og:description\" content=\"KONG\u3068\u306f \u516c\u5f0f\u8aad\u3081\u3063\u3066\u306e\u306f\u304a\u3044\u3068\u3044\u3066 \u565b\u307f\u7815\u3044\u3066\u8aac\u660e\u3059\u308b\u3068 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3092\u69cb\u7bc9\u3059\u308b\u6642\u306eAPI Gate [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/kong\u3053\u3068\u306f\u3058\u3081\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-05T20:03:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T02:44:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/68-0.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u96c5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u96c5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/\",\"name\":\"KONG\u3053\u3068\u306f\u3058\u3081 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-06-05T20:03:31+00:00\",\"dateModified\":\"2024-04-29T02:44:12+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KONG\u3053\u3068\u306f\u3058\u3081\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\",\"name\":\"\u79d1, \u96c5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u96c5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"KONG\u3053\u3068\u306f\u3058\u3081 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/kong\u3053\u3068\u306f\u3058\u3081\/","og_locale":"zh_CN","og_type":"article","og_title":"KONG\u3053\u3068\u306f\u3058\u3081","og_description":"KONG\u3068\u306f \u516c\u5f0f\u8aad\u3081\u3063\u3066\u306e\u306f\u304a\u3044\u3068\u3044\u3066 \u565b\u307f\u7815\u3044\u3066\u8aac\u660e\u3059\u308b\u3068 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3092\u69cb\u7bc9\u3059\u308b\u6642\u306eAPI Gate [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/kong\u3053\u3068\u306f\u3058\u3081\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-06-05T20:03:31+00:00","article_modified_time":"2024-04-29T02:44:12+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d9303913a08637a6e51cc\/68-0.png"}],"author":"\u79d1, \u96c5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u96c5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"13 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/","name":"KONG\u3053\u3068\u306f\u3058\u3081 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-06-05T20:03:31+00:00","dateModified":"2024-04-29T02:44:12+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"KONG\u3053\u3068\u306f\u3058\u3081"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a","name":"\u79d1, \u96c5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","caption":"\u79d1, \u96c5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kong%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=50580"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50580\/revisions"}],"predecessor-version":[{"id":84799,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50580\/revisions\/84799"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=50580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=50580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=50580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}