ApacheでSSL/TLSを使ったセキュアなWebSocket通信を設定する方法

WebSocketは、リアルタイムで双方向の通信を可能にするプロトコルであり、チャットアプリケーションやライブデータフィードなどに広く利用されています。しかし、平文の通信では第三者による盗聴や改ざんのリスクが伴います。これを防ぐためには、SSL/TLSを用いて通信を暗号化し、セキュリティを強化することが重要です。

本記事では、Apacheを活用してSSL/TLS対応のセキュアなWebSocket通信を構築する手順を詳しく解説します。証明書の取得方法からApacheの設定、WebSocketのプロキシ設定まで、実際のコード例を交えて分かりやすく説明します。SSL/TLSによる暗号化は、ユーザーの信頼性向上にも寄与するため、セキュアなWebサービスの提供には欠かせません。

これからWebSocket通信を導入しようとしている方や、既存の通信をより安全にしたい方にとって、本記事が役立つ情報源となるでしょう。

目次
  1. WebSocketとSSL/TLSの概要
    1. SSL/TLSとは
    2. WebSocketとSSL/TLSの組み合わせ
  2. ApacheでWebSocketを利用するメリット
    1. ApacheでWebSocketを使う主なメリット
  3. SSL/TLS証明書の取得と設定方法
    1. Let’s Encryptとは
    2. 前提条件
    3. Certbotのインストール
    4. 証明書の取得
    5. Apacheの設定確認
    6. Apacheの再起動
    7. 証明書の自動更新設定
  4. ApacheのWebSocketプロキシモジュールの有効化
    1. mod_proxy_wstunnelの役割
    2. mod_proxy_wstunnelの有効化手順
    3. 動作確認
    4. 基本的なWebSocketプロキシ設定
    5. ポイント
  5. Apache設定ファイルの編集
    1. 設定ファイルの場所
    2. WebSocket対応のVirtualHost設定例
    3. 設定内容の説明
    4. 設定の有効化
    5. 設定確認
  6. ファイアウォールとポート設定
    1. WebSocketのポートについて
    2. ファイアウォールの状態確認
    3. ポート443の開放
    4. WebSocket専用のポートを開放する場合
    5. ファイアウォールの再起動と確認
    6. Apacheのポート設定確認
    7. トラブルシューティング
  7. 動作確認とデバッグ方法
    1. 1. WebSocket接続の確認
    2. 2. Apacheのログ確認
    3. 3. WebSocketのハンドシェイク確認
    4. 4. WebSocket専用の検証ツールを使用
    5. 5. 接続エラーの原因と対処法
    6. 6. 設定変更後のApacheの再起動
    7. 7. 正常な接続例
  8. セキュリティ強化のための追加設定
    1. 1. HTTP/2の有効化
    2. 2. セキュアヘッダーの追加
    3. 3. TLSバージョンの制限
    4. 4. クライアント認証の導入
    5. 5. CORS(Cross-Origin Resource Sharing)設定
    6. 6. DDoS対策と接続数の制限
    7. 7. WebSocketプロキシのタイムアウト設定
    8. 8. 不要なモジュールの無効化
  9. まとめ

WebSocketとSSL/TLSの概要


WebSocketは、従来のHTTP通信とは異なり、一度接続が確立されるとクライアントとサーバー間で継続的な双方向通信が可能になるプロトコルです。HTTPではリクエストごとに接続を開き直す必要がありますが、WebSocketでは接続を維持したままリアルタイムのデータ交換が可能です。これにより、パフォーマンスの向上や通信の効率化が図れます。

SSL/TLSとは


SSL(Secure Sockets Layer)およびTLS(Transport Layer Security)は、インターネット上でデータを暗号化して安全にやり取りするためのプロトコルです。TLSはSSLの後継プロトコルで、現在では主にTLSが利用されています。これにより、通信内容が第三者に盗聴・改ざんされることを防ぎます。

WebSocketとSSL/TLSの組み合わせ


WebSocketも通常のHTTPと同様に「ws://」で始まる接続では暗号化されませんが、「wss://」を使用することでSSL/TLSによるセキュアな接続が確立されます。これにより、安全なリアルタイム通信が可能になります。

セキュアWebSocket(wss://)のメリット

  • データの盗聴防止: 通信経路が暗号化され、第三者がデータを覗き見できません。
  • データの改ざん防止: 通信内容が改ざんされるリスクが低減します。
  • 通信の信頼性向上: クライアントがサーバーを信頼し、安全に通信できる環境が整います。

WebSocketとSSL/TLSの基礎を理解することで、セキュアなWebアプリケーションの構築が可能になります。次のセクションでは、Apacheを用いた具体的な設定方法について説明します。

ApacheでWebSocketを利用するメリット


Apacheは世界的に広く使われているWebサーバーであり、信頼性や拡張性に優れています。WebSocket通信をApacheで処理することにより、多くの利点が得られます。

ApacheでWebSocketを使う主なメリット

1. 安定性とパフォーマンスの向上


Apacheは大規模なトラフィックにも耐えられる設計がされており、長時間の接続維持が求められるWebSocket通信にも適しています。ロードバランシングやキャッシュの利用により、パフォーマンスの最適化が可能です。

2. セキュリティ機能の強化


Apacheは、SSL/TLSの標準サポートをはじめとする多くのセキュリティ機能を備えています。mod_sslを使用すれば、WebSocket通信も暗号化され、データの盗聴や改ざんを防ぐことができます。これにより、セキュリティレベルの高いWebサービスの提供が可能になります。

3. 柔軟なプロキシ設定


Apacheでは、mod_proxy_wstunnelモジュールを使用して、WebSocket通信をプロキシ経由で処理できます。これにより、バックエンドのWebSocketサーバーをApacheがフロントエンドで中継し、複数のWebアプリケーションを統一的に管理することが可能です。

4. 一元的な管理


Apacheを利用することで、通常のHTTP/HTTPS通信とWebSocket通信を同じサーバー上で一元的に管理できます。複数の異なるプロトコルを一つのサーバーで扱えるため、システムの保守性が向上します。

5. 多様なモジュールと拡張性


Apacheは数多くのモジュールを提供しており、用途に応じて柔軟に機能を拡張できます。WebSocket通信に特化したmod_proxy_wstunnelだけでなく、圧縮やログ管理、アクセス制御など、さまざまなモジュールが利用可能です。

Apacheを使うことで、WebSocket通信の効率性やセキュリティを高めることができ、スケーラブルで信頼性の高いシステムの構築が可能になります。次は、SSL/TLS証明書の取得と設定方法について詳しく解説します。

SSL/TLS証明書の取得と設定方法


SSL/TLS証明書は、WebSocket通信を暗号化し、安全にデータを送受信するために不可欠です。ここでは、Let’s Encryptを使用して無料でSSL/TLS証明書を取得し、Apacheで設定する方法を解説します。

Let’s Encryptとは


Let’s Encryptは、無料でSSL/TLS証明書を発行する非営利団体です。自動化されたプロセスで簡単に証明書を取得・更新できるため、多くのWebサイトで利用されています。

前提条件

  • Apacheがインストールされていること
  • ドメイン名が存在し、サーバーのIPに向いていること
  • Certbot(Let’s Encryptの公式クライアント)がインストールされていること

Certbotのインストール


以下のコマンドを使用してCertbotをインストールします。

sudo apt update
sudo apt install certbot python3-certbot-apache

証明書の取得


次に、以下のコマンドで証明書を取得します。

sudo certbot --apache


プロンプトに従い、メールアドレスやドメイン名を入力します。正常に完了すると、証明書が自動的にApacheの設定に反映されます。

Apacheの設定確認


証明書が正しくインストールされたか確認するため、Apacheの設定ファイルを確認します。

sudo nano /etc/apache2/sites-available/000-default-le-ssl.conf


以下のような設定が存在することを確認してください。

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>

Apacheの再起動


設定を反映させるためにApacheを再起動します。

sudo systemctl restart apache2

証明書の自動更新設定


Let’s Encryptの証明書は90日間有効です。以下のコマンドを使用して、自動更新を設定します。

sudo certbot renew --dry-run


これで、SSL/TLS証明書の取得と設定が完了し、WebSocket通信をセキュアに保つ環境が整いました。次は、WebSocketプロキシモジュールを有効化する方法について解説します。

ApacheのWebSocketプロキシモジュールの有効化


ApacheでWebSocket通信を処理するには、mod_proxy_wstunnelモジュールを有効にする必要があります。このモジュールは、WebSocket通信をプロキシ経由で処理し、バックエンドのアプリケーションとクライアント間の接続を中継します。

mod_proxy_wstunnelの役割


mod_proxy_wstunnelは、ApacheがWebSocket通信(ws://またはwss://)を処理するためのモジュールです。通常のHTTP通信とは異なり、WebSocket通信は長時間接続が維持されるため、専用のプロキシが必要になります。

mod_proxy_wstunnelの有効化手順


以下のコマンドでmod_proxy_wstunnelを有効化します。

sudo a2enmod proxy
sudo a2enmod proxy_wstunnel


モジュールを有効化したら、Apacheを再起動して反映させます。

sudo systemctl restart apache2

動作確認


以下のコマンドで、有効化されているモジュールを確認できます。

apachectl -M | grep proxy_wstunnel


proxy_wstunnel_moduleが表示されていれば、モジュールは正しく有効になっています。

基本的なWebSocketプロキシ設定


ApacheのVirtualHost設定に、WebSocketプロキシのルールを追加します。

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    ProxyRequests Off
    ProxyPass /ws ws://localhost:3000/
    ProxyPassReverse /ws ws://localhost:3000/
</VirtualHost>


この設定により、wss://example.com/wsにアクセスした場合、バックエンドのWebSocketサーバー(ws://localhost:3000/)にリクエストが転送されます。

ポイント

  • ProxyPass: クライアントからのリクエストをWebSocketサーバーに転送します。
  • ProxyPassReverse: サーバーからのレスポンスをクライアントに戻します。
  • ws/wss: WebSocket通信に必要なプロトコル指定です。

これでApacheがWebSocket通信をプロキシする準備が整いました。次は、Apacheの設定ファイルをさらに細かく編集し、より具体的な構成を行います。

Apache設定ファイルの編集


ApacheでWebSocket通信を行うためには、VirtualHost設定を編集し、WebSocketプロキシの詳細な構成を追加する必要があります。ここでは、SSL/TLSで保護されたWebSocket通信(wss://)を想定した具体的な設定例を紹介します。

設定ファイルの場所


ApacheのVirtualHost設定は、通常以下のディレクトリに存在します。

/etc/apache2/sites-available/


対象の設定ファイルを編集します。SSLを使用する場合はdefault-ssl.confまたは000-default-le-ssl.confを編集することが一般的です。

sudo nano /etc/apache2/sites-available/000-default-le-ssl.conf

WebSocket対応のVirtualHost設定例


以下の設定を追加または編集して、WebSocket通信を有効化します。

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html

    # SSL設定
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    # WebSocketプロキシ設定
    ProxyRequests Off
    ProxyPass /ws ws://localhost:3000/
    ProxyPassReverse /ws ws://localhost:3000/

    # 通常のHTTP/HTTPSリクエストのプロキシ設定
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/

    # 必要に応じてCORS対応
    Header always set Access-Control-Allow-Origin "*"
    Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
    Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type"
</VirtualHost>

設定内容の説明

  • ServerName: アクセスするドメイン名を指定します。
  • DocumentRoot: Webのルートディレクトリを指定します。
  • ProxyPass /ws: /wsに対するリクエストをWebSocketサーバー(ws://localhost:3000)に転送します。
  • ProxyPass /: 通常のHTTPリクエストはバックエンドサーバー(http://localhost:8080)に転送されます。
  • CORS設定: 必要に応じてCORS(Cross-Origin Resource Sharing)の設定を追加し、異なるオリジンからのリクエストも許可します。

設定の有効化


設定ファイルを保存したら、次のコマンドで設定を有効化します。

sudo a2ensite 000-default-le-ssl.conf
sudo systemctl reload apache2

設定確認


Apacheの構文チェックを行い、エラーがないことを確認します。

sudo apachectl configtest


問題がなければ以下のようなメッセージが表示されます。

Syntax OK

この設定により、ApacheがSSL/TLSで保護されたWebSocket通信を処理できるようになります。次は、ファイアウォールとポートの設定について詳しく解説します。

ファイアウォールとポート設定


ApacheでWebSocket通信を処理する際は、WebSocketが使用するポートを適切に開放し、ファイアウォールを設定する必要があります。これにより、外部からのWebSocket接続を受け付けられるようになります。

WebSocketのポートについて

  • 通常のWebSocket通信(ws://): ポート 80(HTTPと同じ)
  • セキュアWebSocket通信(wss://): ポート 443(HTTPSと同じ)

ApacheでSSL/TLSを使用したWebSocket通信を行う場合、ポート443を開放しておく必要があります。

ファイアウォールの状態確認


まず、現在のファイアウォールの状態を確認します。

sudo ufw status


「inactive」と表示された場合は、ファイアウォールは無効化されています。アクティブであれば、ポートの設定を行います。

ポート443の開放


以下のコマンドで、HTTPS(ポート443)を開放します。

sudo ufw allow 443


HTTP(ポート80)も必要であれば以下のコマンドで開放します。

sudo ufw allow 80

WebSocket専用のポートを開放する場合


バックエンドのWebSocketサーバーが独自のポート(例: 3000番)で動作している場合は、以下のようにポートを個別に開放します。

sudo ufw allow 3000

ファイアウォールの再起動と確認


設定を反映させるため、ファイアウォールを再起動します。

sudo ufw reload


設定が反映されているか再度確認します。

sudo ufw status


以下のように表示されていれば、設定は完了です。

80/tcp                      ALLOW       Anywhere
443/tcp                     ALLOW       Anywhere
3000/tcp                    ALLOW       Anywhere

Apacheのポート設定確認


Apacheが正しいポートで待ち受けているか確認します。

sudo netstat -tuln | grep apache


もしくは、以下のコマンドでApacheのポート設定を直接確認します。

sudo nano /etc/apache2/ports.conf


次のような設定が記載されていればOKです。

Listen 80
Listen 443

トラブルシューティング

  • 接続できない場合: ポートが正しく開放されているか、ファイアウォールの設定を再確認します。
  • Apacheが起動しない場合: 設定ファイルの構文エラーがないか、apachectl configtestでチェックします。
  • WebSocket接続が不安定: Apacheのログ(/var/log/apache2/error.log)を確認し、エラー内容を特定します。

これで、ファイアウォールとポートの設定が完了し、WebSocket通信が安定して行える環境が整いました。次は、動作確認とデバッグ方法について解説します。

動作確認とデバッグ方法


ApacheでのWebSocket設定が完了したら、正しく動作しているかを確認し、問題があればデバッグを行います。WebSocket通信は通常のHTTP通信と異なるため、特有の確認手順やデバッグ方法が必要です。

1. WebSocket接続の確認


クライアントからWebSocket接続を試み、接続の成否を確認します。以下はJavaScriptを使った簡単なWebSocketクライアントの例です。

<script>
  const socket = new WebSocket("wss://example.com/ws");

  socket.onopen = function () {
    console.log("WebSocket接続が確立されました。");
    socket.send("Hello Server!");
  };

  socket.onmessage = function (event) {
    console.log("サーバーからのメッセージ: ", event.data);
  };

  socket.onerror = function (error) {
    console.error("WebSocketエラー: ", error);
  };

  socket.onclose = function () {
    console.log("WebSocket接続が閉じられました。");
  };
</script>


このコードをブラウザで実行し、ブラウザの開発者ツール(F12)でコンソールの出力を確認します。

2. Apacheのログ確認


ApacheがWebSocketリクエストを処理しているか確認するには、Apacheのアクセスログやエラーログをチェックします。

sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log
  • アクセスログ: WebSocketリクエストが記録されているかを確認します。
  • エラーログ: 接続エラーや設定ミスが記録されていないか確認します。

3. WebSocketのハンドシェイク確認


WebSocketの接続はHTTPのUpgradeリクエストとして処理されます。以下のコマンドでWebSocketハンドシェイクが行われているか確認します。

sudo tcpdump -i any port 443 -X


成功している場合は、以下のようなレスポンスが確認できます。

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade

4. WebSocket専用の検証ツールを使用


WebSocket通信を確認するためのブラウザ拡張機能や専用ツールを使用します。

  • Chrome DevTools: NetworkタブでWSを選択し、WebSocket通信を確認します。
  • WebSocket Echo Test: https://www.websocket.org/echo.html で、手軽にWebSocketの接続テストが行えます。

5. 接続エラーの原因と対処法

  • 502 Bad Gateway: バックエンドのWebSocketサーバーが動作していない可能性があります。Apacheの設定を確認し、サーバーが起動しているか確認してください。
  • 403 Forbidden: Apacheのアクセス制限やCORSポリシーによってブロックされている可能性があります。適切なCORS設定を追加してください。
  • 500 Internal Server Error: Apacheの設定ファイルに構文エラーがある可能性があります。設定ファイルを確認し、apachectl configtestでチェックします。

6. 設定変更後のApacheの再起動


設定変更を行った場合は、必ずApacheを再起動して変更を反映させます。

sudo systemctl restart apache2

7. 正常な接続例


正常に接続された場合、以下のような流れでコンソールにメッセージが表示されます。

WebSocket接続が確立されました。
サーバーからのメッセージ: Hello Client!
WebSocket接続が閉じられました。

これでWebSocket通信の動作確認が完了し、問題が発生した場合のデバッグ方法についても理解できました。次は、セキュリティをさらに強化する追加設定について解説します。

セキュリティ強化のための追加設定


WebSocket通信の基本的なSSL/TLS設定が完了しても、さらなるセキュリティ強化が求められます。攻撃から保護し、安全な通信を維持するために、いくつかの追加設定を行います。

1. HTTP/2の有効化


HTTP/2は従来のHTTP/1.1よりも効率的で、セキュリティ面でも強化されています。ApacheでHTTP/2を有効にすることで、WebSocket通信のパフォーマンスと安全性を向上させることができます。

HTTP/2の有効化手順

sudo a2enmod http2


VirtualHost設定に以下の行を追加します。

Protocols h2 http/1.1


設定を反映させるためApacheを再起動します。

sudo systemctl restart apache2

2. セキュアヘッダーの追加


セキュリティヘッダーを追加することで、クロスサイトスクリプティング(XSS)やクリックジャッキングなどの攻撃からアプリケーションを守ります。

セキュリティヘッダーの設定例

<VirtualHost *:443>
    Header always set X-Frame-Options "DENY"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</VirtualHost>
  • X-Frame-Options: iframeの埋め込みを防止し、クリックジャッキングを防ぎます。
  • X-Content-Type-Options: MIMEタイプのスニッフィングを防止します。
  • X-XSS-Protection: XSS攻撃を防止します。
  • Strict-Transport-Security(HSTS): HTTPS接続を強制し、ダウングレード攻撃を防ぎます。

3. TLSバージョンの制限


古いTLSバージョンは脆弱性が多いため、TLS 1.2以上を強制します。

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1


これにより、TLS 1.2およびTLS 1.3のみが使用されます。

4. クライアント認証の導入


特定のクライアントのみWebSocket接続を許可する場合は、クライアント証明書認証を導入します。

SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /etc/apache2/ssl/ca.crt

5. CORS(Cross-Origin Resource Sharing)設定


WebSocket通信がクロスドメインで行われる場合は、CORSを適切に設定します。

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type"


特定のオリジンだけを許可する場合は、*の部分をドメイン名に置き換えます。

6. DDoS対策と接続数の制限


大量のWebSocket接続を試みるDDoS攻撃を防ぐため、接続数の制限を設定します。

LimitRequestBody 102400
LimitRequestFields 100
LimitRequestFieldSize 1024


これにより、リクエストボディの最大サイズやヘッダー数を制限できます。

7. WebSocketプロキシのタイムアウト設定


長時間接続が維持されるWebSocketでは、適切なタイムアウト値を設定することが重要です。

ProxyTimeout 600


これにより、WebSocket接続が600秒(10分)でタイムアウトします。

8. 不要なモジュールの無効化


使用していないモジュールはセキュリティリスクになる可能性があるため、無効化します。

sudo a2dismod autoindex
sudo a2dismod status


モジュールを無効化した後は、Apacheを再起動します。

sudo systemctl restart apache2

これらの追加設定を行うことで、WebSocket通信の安全性が一層強化されます。次は、記事のまとめを作成します。

まとめ


本記事では、ApacheでSSL/TLSを利用したセキュアなWebSocket通信を構築する方法について詳しく解説しました。WebSocket通信はリアルタイムでのデータ送受信に優れていますが、セキュリティリスクを伴うため、SSL/TLSを導入して暗号化することが不可欠です。

具体的には、Let’s Encryptを用いたSSL証明書の取得と設定、mod_proxy_wstunnelを活用したWebSocketプロキシの有効化、VirtualHostの詳細な設定方法を順を追って説明しました。また、ファイアウォールの設定やポートの開放、動作確認とデバッグ方法、さらにセキュリティ強化のための追加設定についても触れました。

これらの手順を踏むことで、安全で信頼性の高いWebSocket通信環境を構築できます。リアルタイムアプリケーションやデータストリーミングなど、WebSocketを利用するサービスで、セキュリティを確保しつつスムーズな通信を実現しましょう。

コメント

コメントする

目次
  1. WebSocketとSSL/TLSの概要
    1. SSL/TLSとは
    2. WebSocketとSSL/TLSの組み合わせ
  2. ApacheでWebSocketを利用するメリット
    1. ApacheでWebSocketを使う主なメリット
  3. SSL/TLS証明書の取得と設定方法
    1. Let’s Encryptとは
    2. 前提条件
    3. Certbotのインストール
    4. 証明書の取得
    5. Apacheの設定確認
    6. Apacheの再起動
    7. 証明書の自動更新設定
  4. ApacheのWebSocketプロキシモジュールの有効化
    1. mod_proxy_wstunnelの役割
    2. mod_proxy_wstunnelの有効化手順
    3. 動作確認
    4. 基本的なWebSocketプロキシ設定
    5. ポイント
  5. Apache設定ファイルの編集
    1. 設定ファイルの場所
    2. WebSocket対応のVirtualHost設定例
    3. 設定内容の説明
    4. 設定の有効化
    5. 設定確認
  6. ファイアウォールとポート設定
    1. WebSocketのポートについて
    2. ファイアウォールの状態確認
    3. ポート443の開放
    4. WebSocket専用のポートを開放する場合
    5. ファイアウォールの再起動と確認
    6. Apacheのポート設定確認
    7. トラブルシューティング
  7. 動作確認とデバッグ方法
    1. 1. WebSocket接続の確認
    2. 2. Apacheのログ確認
    3. 3. WebSocketのハンドシェイク確認
    4. 4. WebSocket専用の検証ツールを使用
    5. 5. 接続エラーの原因と対処法
    6. 6. 設定変更後のApacheの再起動
    7. 7. 正常な接続例
  8. セキュリティ強化のための追加設定
    1. 1. HTTP/2の有効化
    2. 2. セキュアヘッダーの追加
    3. 3. TLSバージョンの制限
    4. 4. クライアント認証の導入
    5. 5. CORS(Cross-Origin Resource Sharing)設定
    6. 6. DDoS対策と接続数の制限
    7. 7. WebSocketプロキシのタイムアウト設定
    8. 8. 不要なモジュールの無効化
  9. まとめ