NGINX の例
NGINX はプロキシ機能と Web サーバーオプションを提供します。以下の例では、ロードバランサーのみを設定しています。スティッキーセッションなどの一部の機能は無料のバージョンでは提供されていないので、NGINX Plus へのアップグレードが必要です。
フロントエンド設定
NGINX のフロントエンド設定では、ポートとルーティング規則を含むサーバーを設定します。
• listen
HAProxy の bind に相当する、アプリケーションが通信する外部ポート。
• location
HAProxy と同様に path に基づいたルーティング規則。
◦ すべてのトラフィックは、デフォルトではロケーション / を経由し、上流の thingworx グループに渡されます。
◦ 接続サーバーでのロケーション照合では各パスをリストするのではなく正規表現が使用されます。これらは上流の cxserver グループに渡されます。
以下に例を示します。
server {
listen 80;
# connection server paths
location ~ ^/Thingworx/(WS|WSTunnelClient|WSTunnelServer|TWS)\.* {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://cxserver;
}
# everything else to thingworx
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://thingworx;
}
}
プラットフォームのバックエンド設定
このセクションは、リクエストと負荷分散アルゴリズムを処理可能なサーバーのリストです。
• ip_hash
IP アドレスに基づいてリクエストを特定のサーバーに一貫してルーティングします。スティッキーセッションは NGINX Plus の機能です。
• server
リスト内のサーバーごとにエントリがあります。
• 正常性チェックは設定されていませんが、サーバーが失敗した場合、トラフィックはルート変更されます。正常性チェックは NGINX Plus の機能です。
以下に例を示します。
upstream thingworx {
ip_hash;
server platform1:80;
server platform2:80;
}
接続サーバーのバックエンド設定
• ip_hash
IP アドレスに基づいてリクエストを特定のサーバーに一貫してルーティングします。これは HAProxy での source に相当します。
• server
リスト内のサーバーごとにエントリがあります。
• 正常性チェックは設定されていませんが、サーバーが失敗した場合、トラフィックはルート変更されます。正常性チェックは NGINX Plus の機能です。
以下に例を示します。
upstream cxserver {
ip_hash;
server cxserver1:80;
server cxserver2:80;
}
完全な例
worker_processes 5; ## Default: 1
events {
}
http {
resolver 127.0.0.11:53 valid=30s;
upstream thingworx {
ip_hash;
server platform1:80;
server platform2:80;
}
upstream cxserver {
ip_hash;
server cxserver1:80;
server cxserver2:80;
}
server {
listen 80;
# connection server paths
location ~ ^/Thingworx/(WS|WSTunnelClient|WSTunnelServer|TWS)\.* {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://cxserver;
}
# everything else to thingworx
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://thingworx;
}
}
}