Apache 2.4 で 2 つの Web アプリケーションを実行する

Apache 2.4 で 2 つの Web アプリケーションを実行する

Linux Apache サーバー上で 2 つのアプリケーションを実行しようとしています。

  • オープンプロジェクト
  • pgAdmin (WSGI アプリケーション)

そして、リモート コンピューターから接続するには、次のhttpd構成ファイルを使用します。

OpenProjectの場合:

Include /etc/openproject/addons/apache2/includes/server/*.conf

<VirtualHost *:80>
  ServerName 198.162.12.13
  DocumentRoot /opt/openproject/public

  ProxyRequests off

  Include /etc/openproject/addons/apache2/includes/vhost/*.conf

  # Can't use Location block since it would overshadow all the other proxypass directives on CentOS
  ProxyPass /openproject/ http://127.0.0.1:6000/openproject/ retry=0
  ProxyPassReverse /openproject/ http://127.0.0.1:6000/openproject/
</VirtualHost>

pgAdminの場合:

<VirtualHost *:80>

    ServerName 198.162.214.23
    WSGIScriptAlias /pgadmin4 /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi
    WSGIDaemonProcess pgadmin processes=1 threads=25

    <Directory /usr/lib/python2.7/site-packages/pgadmin4-web/>
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>

</VirtualHost>

そして今、(私にとっての)魔法が始まり、私の疑問はここにあります。

両方のファイルのサーバー名を見てください。pgAdmin には実際の IP アドレスが含まれていますが、OpenProject にはランダムな IP アドレスが含まれています。

この設定では、pgAdmin は動作しますが、OpenProject は動作しません。

通常、pgAdmin の設定を行わないと、OpenProject はどの IP アドレスでも動作しますが、これは私にとっては奇妙なことなので、最初の質問は「なぜですか?」です。

まとめると次のようになります。

両方のファイルに実際の IP アドレスを設定すると、OpenProject は機能しますが、pgAdmin は機能しません。

両方のファイルにランダムな IP アドレスを設定すると、OpenProject は機能しますが、pgAdmin は機能しません。

OpenProject に実際の IP を設定し、pgAdmin にランダムな IP を設定すると、OpenProject は機能しますが、pgAdmin は機能しません。

OpenProject にランダム IP を設定し、pgAdmin に実際の IP を設定すると、OpenProject は機能しませんが、pgAdmin は機能します。

なぜこんなにめちゃくちゃになっているのでしょうか? 両方のアプリケーションが期待どおりに動作するようにこれらのファイルを構成するにはどうすればよいでしょうか?

答え1

DNSを使用して、サーバーの実際のアドレス(明らかに198.162.12.13)を指す2つの名前(例:openproject.exampleと)を作成します。これらの名前をそれぞれの設定で構成し、pgadmin.exampleServerNamehttp://openproject.exampleそしてhttp://pgadmin.exampleアクセスするには。

答え2

単一の IP アドレスで複数の個別の Web サイト/アプリケーションを実行するには、おおよそ 3 つのオプションがあります。

  • 各アプリケーションを異なる URL パス (つまり、$(hostname)/app1と )にインストールします/app2

両方のアプリケーションをルートにインストールする必要がある場合は、/次のオプションがあります。

  • 異なるポート番号で複数の仮想Webサーバーを実行し、http://$(hostname):81/1つのアプリケーションを表示し、http://$(hostname):82/別のアプリケーションを表示することができます。

  • 複数の仮想ウェブサーバーを異なるホスト名で実行し、名前ベースの仮想ホスティング. その後、http://app1.example.com/1つのアプリケーションを表示し、http://app2.example.com/別のアプリケーションを表示します

設定では最後のオプションを使用しようとしているように見えますが、両方の VirtualHost 定義が同じに設定されるため、ServerNameApache はそれらを区別できません。

関連情報