web-dev-qa-db-ja.com

ApacheVirtualHostが一致しません

Apache Webサーバーのインスタンスがあり、次の方法でURLをマップする必要があります。

  1. b2b.domain.eからのURLは別のサーバーにプロキシする必要があります10.1.0.100[IT WORKS]

  2. b2b.domain.eu/apiからのURLはTomcat apiアプリケーションにプロキシする必要があります[IT WORKS]

  3. b2b.domain.eu/decoderからのURLはTomcatデコーダーアプリケーションにプロキシする必要があります[IT WORKS]

  4. Url /App1/Shop/home.aspxの場合、出力フィルターを実行する必要があります[IT WORKS]

  5. www.domain.eおよびweb.domain.eサービスを提供する必要がありますwordpressウェブサイト[IT DO N'T WORK]->代わりに、アプリケーションはデフォルトのように見えるApp1に移動します

以下に私の実際の構成があります。さまざまな方法で変更したり、順序を変更したりしようとしましたが、成功しませんでした。誰かが私が期待される行動に到達する方法を理解するのを手伝ってくれる?

前もって感謝します

<VirtualHost *:80>
ServerName 10.1.0.101
ServerAlias b2b.domain.eu

ProxyRequests Off
ProxyPreserveHost On

ExtFilterDefine filter1 mode=output \
cmd="/var/www/cgi-bin/filter.pl /tmp/filter.out"

#Root: forward to App1 [OK]
<LocationMatch "^/">
   ProxyPassMatch  http://10.1.0.100/App1
   ProxyPassReverse  http://10.1.0.100/App1
</LocationMatch>

#API: Forward to Tomcat (api) [OK]
<LocationMatch "^/api/(.*)">
   ProxyPassMatch   http://localhost:8080/api/$1
   ProxyPassReverse http://localhost:8080/api/$1
</LocationMatch>

#Decoder: Forward to Tomcat (decoder) [OK]
<LocationMatch "^/decoder(.*)">
   ProxyPassMatch   http://localhost:8080/decoder$1
   ProxyPassReverse http://localhost:8080/decoder$1
</LocationMatch>

#App1 with filter execution [OK]
<LocationMatch "^/App1/Shop/home.aspx(.*)">
   ProxyPassMatch   
     http://10.1.0.100/App1/Shop/home.aspx$1
   ProxyPassReverse 
   http://10.1.0.100/App1/Shop/home.aspx$1

   SetOutputFilter   filter1
</LocationMatch>

#App1 [OK]
<LocationMatch "^/App1(.*)">
   ProxyPassMatch   http://10.1.0.100/App1$1
   ProxyPassReverse http://10.1.0.100/App1$1
</LocationMatch>

</VirtualHost>

#[KO]
<VirtualHost *:80>
   ServerName 10.1.0.101
   ServerAlias www.domain.eu  web.domain.eu
   DocumentRoot /var/www/html/wordpress
</VirtualHost>

[UPDATE 2018/11/28]

@tomの提案に従って構成を変更しましたが、これらの変更で問題が解決しませんでした。ファイルC:\ Windows\System32\drivers\etc\hostsのWindowsクライアントにフォローラインを追加すると、期待どおりの動作が見られるため、問題はApache構成ではなく、フォーティネット60Eにある可能性があります。

10.1.0.101      web.domain.eu

DNSは、パブリックIPをマップするように構成されています。フォーティネットはリクエストを(NATなしで)Apache Webサーバー(10.1.0.101)に転送しますが、一部の情報が削除されているようです。

1
fciri

両方のVirtualHostインスタンスは、同じIP +ポート+ ServerNameの組み合わせを持っています。これらの3つの項目を合わせて、仮想ホストを一意に定義する必要があります。名前ベースの仮想ホスティングの場合、IPアドレスとポート番号は同じになるため、ServerNameディレクティブを使用して区別します。 IPアドレスをServerNameとして入力しないでください。

<VirtualHost 10.1.0.101:80>
  ServerName b2b.domain.eu
  [...]
</VirtualHost>

<VirtualHost 10.1.0.101:80>
  ServerName www.domain.eu
  ServerAlias web.domain.eu
  [...]
</VirtualHost>

名前ベースの仮想ホスティング に関するドキュメントも読んでください。

1
Tommiie