1つのLinuxシステムで2つのWebサーバーを実行しますか?

1つのLinuxシステムで2つのWebサーバーを実行しますか?

質問:私はそれぞれJAVAとPYTHONを使用して作成された2つのWebアプリケーションを持っています。

JAVAアプリケーションは、Tomcatサーバーを使用してポート番号8000で実行されます。 PYTHONアプリケーションはweb.pyを使用し、ポート番号8080で実行されます。 Python(API)はバックエンド操作を実行し、Java(UI)はフロントエンドとして機能します。

私のローカルUbuntuコンピュータでは、これらのアプリケーションは正しく実行されます。ただし、ポート80と443のみが開いていて、残りのポートはすべて制限されているQAコンピュータでこのアプリケーションを実行する必要があります。 authbindを使用してポート80でJavaを実行しようとしましたが、失敗しました。

HTTPリクエストを内部的にそのWebサービスとポート番号にリダイレクトするためにURLフィルタリングを使用する他の方法はありますか?他の方法がある場合は、関連情報を共有してください。

よろしくお願いします。

答え1

これに対する標準的な解決策は、通常、ホスト名に基づいて適切な「実際の」サーバーに要求を転送するフロントエンドサーバーを使用することです。これは…リバースプロキシnginxこの目的のためによく使用されます。 ~から地図時間

/etc/nginx/nginx.conf2つのバックエンド()を持つリバースプロキシの構成は次のとおりです。

server {
    server_name java-app.example.com;
    proxy_pass http://localhost:8000/;
}

server {
    server_name python-app.example.com;
    proxy_pass http://localhost:8080/;
}

もちろん便利な追加オプション

答え2

TCP:80への要求がHTTP要求のFQDNに基づいて別の物理ポートにリダイレクトされるように、nginxをリバースプロキシとしてインストールして設定できます。

見るここnginx設定の例。

関連情報