2.4. API の設定
システムが機能する仕組みを以下に示します。
- シンサーバーは、ポート 8000 で起動します。
-
アップストリームの
YOURAPINAMEは、localhost:8000 でリッスンしています。 -
ポート 80 の今後の接続(
serverセクションで定義されているように)は、YOURAPINAMEに「リダイレクト」です。
2.4.1. 3scale の場合 リンクのコピーリンクがクリップボードにコピーされました!
wheel を修正して流量制御、アクセス制御、および解析をゼロから実装するのではなく、3scale を使用します。アカウントがまだアカウントをお持ちでない場合は、ここにサインアップしてアクティベートし、表示されたリンクで新規インスタンスにログインします。初回ログイン時に、作成されるサンプルデータのオプションを選択してください。したがって、後で使用する API キーがいくつかあります。tour を確認して、システム機能(オプション)を把握してから実装に進んでください。
即時の結果を取得するには、ステージング環境で API ゲートウェイで開始します。このゲートウェイは、開発中に使用することができます。その後、完全な実稼働デプロイメント用にスケールアップできる NGINX プロキシーを設定します。
ここでは、API プロキシーの設定方法や、より高度な設定オプション についてのドキュメントを参照してください。
3scale アカウントにサインインしたら、メイン Dashboard 画面で API を起動するか、または API に Go to API→Select the service(API)→Integration in the sidebar→Proxy https://www.3scale.net/2015/06/how-to-deploy-an-api-amazon-ec2/
API バックエンドのアドレスを設定します。
`http://YOURAPP.cloudapp.net:80`
`http://YOURAPP.cloudapp.net:80`
3scale で一部のアプリケーション認証情報を作成したら、ステージング環境用 API ゲートウェイエンドポイントに到達して API をテストすることができます。
`https://XXX.staging.apicast.io/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY`
`https://XXX.staging.apicast.io/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY`Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ここで、XXX はステージング API ゲートウェイに固有の設定で、APP_ID は 3scale アカウントへの初回ログイン時に作成したサンプルアプリケーションの ID とキーです。APP_KEY(その手順がない場合は、開発者アカウントを作成し、そのアカウント内にアプリケーションを作成します)。
これは、次回認証情報が正しくない状態で、アプリケーション認証情報なしで試行します。認証後、定義した流量制御内、およびその流量制御で認証します。満足度に機能したら、NGINX の設定ファイルをダウンロードします。
エラーがあれば、API に直接アクセスできるかどうかを確認します(your-public-dns:3000/v1/words/awesome.json)。利用できない場合は、AWS インスタンスが実行しているかどうかと、タインサーバーがインスタンスで実行されているかどうかを確認します。*
API バックエンドアドレスを http://YOURAPP.cloudapp.net:80 に変更できます。
終了したら、Download your nginx config をクリックします。これにより、アプリケーションを設定するために使用する .conf および .lua ファイルが含まれるアーカイブがダウンロードされます。
.conf を適宜変更します。
API ゲートウェイと API が同じ仮想マシンにある場合は、ブロックを削除します。
upstream backend_YOURAPP.cloudapp.net{
server ....
}
upstream backend_YOURAPP.cloudapp.net{
server ....
}
…and replace with…
upstream YOURAPINAME {
server 127.0.0.1:8000;
}
upstream YOURAPINAME {
server 127.0.0.1:8000;
}
YOURAPINAME には、RFC 3986 で定義された URL の有効な文字のみを含めることができます。
.lua ファイルで、ngx.var.proxy_pass = "http://backend_YOURAPP.cloudapp.net" の行を変更します。
すべてのケースで ngx.var.proxy_pass = "http://YOURAPINAME" を使用します。
server_name api.2445580546262.proxy.3scale.net; を
server_name YOURSERVICENAME.cloudapp.net;
server ブロックで、上部に以下を追加します。
root /home/USERNAME/apps/YOURAPINAME/current; access_log /home/USERNAME/apps/YOURAPINAME/current/log/thin.log; error_log /home/USERNAME/apps/YOURAPINAME/current/log/error.log;
root /home/USERNAME/apps/YOURAPINAME/current;
access_log /home/USERNAME/apps/YOURAPINAME/current/log/thin.log;
error_log /home/USERNAME/apps/YOURAPINAME/current/log/error.log;
replace access_by_lua_file lua_tmp.lua;
…with… access_by_lua_file /opt/openresty/nginx/conf/lua_tmp.lua;
post_action /out_of_band_authrep_action; の前に以下を追加します。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
最後に、これらのファイル nginx.conf および tmp_lua.lua の名前を変更します。