私はまだ Apache の設定の専門家ではないので、テスト サーバーをセットアップしようと努力したにも関わらず、何か簡単なことを見逃していたらすみません。
バックグラウンド
2 つの要件があります。
- のリクエスト
subdomain.domain.com
は、/var/www/html/subdomain
- のリクエストは、同じシステム上の
code.domain.com
別のサーバーで別のポートで処理する必要があります。最初の要件と同じルールの下で処理されるべきではない固定サブドメインであることに注意してください。別の言い方をすれば、から提供する必要があり、から提供する必要がありますが、まったく異なる方法で処理されます。code
mysite.domain.com
/var/www/html/mysite
xyz.domain.com
/var/www/html/xyz
code.domain.com
試したこと
#1を行うには、を使用しますVirtualDocumentRoot /var/www/html/%1
。#2については、code
サブドメインだけで、およびを使用してポート5000の同じシステム上の別のサーバーにトラフィックをリダイレクトするまったく異なる構成を使用する必要がProxyPass
ありProxyPassReverse
ます。
結果
<VirtualHost>
使用されるサブドメインが NOT であっても、すべてのリクエストは最初のコンテナに従って Proxy ディレクティブを介してリダイレクトされcode
ます。
code
vhost は設定の最初にありますが、サブドメインが NOT の場合は使用しないでください。code
クライアントによって要求された ServerName が ではないためcode.domain.com
です。
質問
1 つの特定のサブドメインが 1 つの仮想ホストを使用し、他のサブドメインが別の仮想ホストを使用するように、これら 2 つの構成を調整するにはどうすればよいですか?
構成
<VirtualHost *:80>
ServerName code.domain.com
ServerAlias code.local
ServerAdmin foo@domain.com
DocumentRoot /var/www/repos
ErrorLog logs/code.domain.com
CustomLog logs/code-access common
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
<Directory "/var/www/repos">
DAV On
Options +Indexes +FollowSymLinks
AllowOverride All
Allow from all
Order allow, deny
</Directory>
</VirtualHost>
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot /var/www/html/%1
VirtualScriptAlias /var/www/html/%1/cgi-bin
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
ServerName domain.com
ServerAlias localhost
ServerAdmin foo@domain.com
</VirtualHost>