ASP.NET Core Web APIを公開する(Ubuntu+Apache環境)

Apache
この記事は約3分で読めます。
スポンサーリンク

本番環境で、ASP.NET Core Web APIを公開するにあたり、調べたことをまとめました。

スポンサーリンク

構成

ASP.NET Core Web APIを本番環境で運用するにあたり、Webサーバとして有名なApacheをリバースプロキシとして使います。クライアントからのHTTPリクエストは、リバースプロキシを経由して、ASP.NET Core Web APIに到達します。

スポンサーリンク

Apache:リバースプロキシの設定

Apacheの設定ファイル(/etc/apache2/sites-available/test.conf)に、リバースプロキシの設定を行います。クライアントからのHTTPリクエストが、localhostのASP.NET Core Web APIに転送されます。

<VirtualHost *:80>
    RequestHeader set "X-Forwarded-Proto" "http"

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName test.com
    ErrorLog ${APACHE_LOG_DIR}/helloapp-error.log
    CustomLog ${APACHE_LOG_DIR}/helloapp-access.log common
</VirtualHost>

クライアントとリバースプロキシ(Apache)間の通信プロトコル「http」を、ヘッダーに追加する設定(X-Forwarded-Proto)をしています。こうすることで、リバースプロキシへのアクセスに使われたプロトコルをASP側で知ることができます。
また、デフォルトでは「ProxyAddHeaders On」となっているため、以下の項目もヘッダーに追加されます。

  • X-Forwarded-For:クライアントのIPアドレス
  • X-Forwarded-Host
  • X-Forwarded-Server

設定変更を反映させるために、Apacheの再起動を行います。

systemctl restart apache2
スポンサーリンク

動作確認

JSONデータの取得

PostmanというAPIのテストツールを使って、GETリクエストを出します。
JSONデータが返されたことを確認できます。

パケットキャプチャ

その時にやりとりされるパケットを取得してみます。
以下のコマンドを打てば、キャプチャ結果をファイルに保存できます。

tcpdump -i any -w test.cap

取得したファイルを、ネットワークプロトコルアナライザ「Wireshark」で解析してみます。

主に、以下のことが確認できます。

  • HTTP通信の前に、3ウェイハンドシェイクでTCPコネクションを確立している。
  • リバースプロキシとASP間で、HTTPヘッダーに「X-Forwarded-For」などが追加されている。
  • クライアント→リバースプロキシ→ASPの順に、パケットが流れている。

まとめ

本番環境で、ASP.NET Core Web APIを公開するにあたり必要となるリバースプロキシの設定をまとめました。また、動作確認では、APIにアクセスしたときの通信をWiresharkを使って確認しました。

コメント

タイトルとURLをコピーしました