【Apache】バーチャルホスト

イメージ図

・1つのwebサーバでアプリを2つ動かす
・2つのアプリのホスト名は別にする
Tomcatから静的コンテンツを参照する

Apache側の設定

①バーチャルホストの設定ファイルを読み込む

C:\Apache24\conf\httpd.conf

②バーチャルホストの設定ファイルを編集する

C:\Apache24\conf\extra\httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin webmaster@dev1.example.com
    DocumentRoot "C:/Apache24/htdocs/dev1"
    ServerName dev1.example.com
    ErrorLog "logs/dev1/error.log"
    CustomLog "logs/dev1/access.log" common
    ProxyPass /demo ajp://localhost:8009/demo
    ProxyPassReverse /demo ajp://localhost:8009/demo
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dev2.example.com
    DocumentRoot "${SRVROOT}/htdocs/dev2"
    ServerName dev2.example.com
    ErrorLog "logs/dev2/error.log"
    CustomLog "logs/dev2/access.log" common
    ProxyPass /test ajp://localhost:8009/test
    ProxyPassReverse /test ajp://localhost:8009/test
</VirtualHost>
③ログの格納フォルダを作成する

httpd-vhosts.confで指定した場所
C:\Apache24\logs

④静的コンテンツの格納フォルダを作成する

httpd-vhosts.confで指定した場所
C:\Apache24\htdocs

Tomcatから参照できることを確認するために画像ファイルを格納しておく


⑤hostsファイルにServerNameを記載する

C:\Windows\System32\drivers\etc

Tomcat側の設定

①Server.xmlajpの設定、バーチャルホストの設定を記載する
<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443"
               maxParameterCount="1000"
               secretRequired = "false"
               />
    <Engine name="Catalina" defaultHost="localhost">
        <Host name="app1.example.com" appBase="/webapps/app1" unpackWARs="true" autoDeploy="true">
        </Host>
        <Host name="app2.example.com" appBase="/webapps/app2" unpackWARs="true" autoDeploy="true">
        </Host>
    </Engine>
  </Service>
</Server>
②アプリをデプロイする

※appBaseで指定した場所
C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps



Apacheの静的コンテンツを参照する


動作確認

ApacheTomcatを起動し、URLを実行する
http://app1.example.com/demo/

http://app2.example.com/test/