2017-06-23 10 views
3

私はNGINXを初めて使用しており、ERP Webサーバーの負荷を分散しようとしています。 私は私にはブラックボックスです、WebSphereが提供ポート80上で実行されている3 Webサーバを持っている:NGINX設定:

* web01.example.com/path/apphtml 
* web02.example.com/path/apphtml 
* web03.example.com/path/apphtml 

nginxのは、仮想URL ourerp.example.comをリッスンし、クラスタにプロキシされます。ここで

は私の設定です:

upstream myCluster { 
    ip_hash; 
    server web01.example.com:80; 
    server web02.example.com:80; 
    server web03.example.com:80; 
} 

server { 
    listen  443 ssl http2; 
    listen  [::]:443 ssl http2; 
    server_name ourerp.example.com; 
    location/{ 
     rewrite ^(.*)$ /path/apphtml break; 
     proxy_pass  http://myCluster; 
    } 
} 

私だけproxy_pass、その後、nginxのロードバランスを使用しますが、web01.example.comに要求を転送していない

web01.example.com/path/apphtmlとき

URLの書き換えを追加しようとすると、単に仮想URLが書き換えられ、私はourerp.example.com/path/apphtmlで終わります。

アップストリームレベルでURL書き換えを行うことも、アップストリームレベルでアプリにパスを追加することもできますか?

答えて

0

あなたは、プロキシ経由で/path/apphtml/に使用を/をマップしようとしている場合:

proxy_pass http://myCluster/path/apphtml/; 

多くのためのthis documentを参照してください。

rewriteステートメントの問題は、置換文字列の末尾に$1がありません。詳細については、this documentを参照してください。しかし、上記のように、proxy_passステートメントは同じジョブをとることができるため、rewriteステートメントは必要ありません。

+0

リチャード、ご返信ありがとうございます。あなたが言及したようにプロキシを試してみましたが、NGINX要求はブラウザに送り返され、パスが追加された仮想URLであり、クラスタ内のサーバの1つを使用しません。 –

+0

ありがとうございました。さらにトラブルシューティングを行った結果、ロードバランサのURLを正しく使用していないことがわかった。 ourerp.example.comの代わりにourerp.example.com/path/apphtml/を使用すると、ロードバランシングが行われました。 –