
複数のウェブサイトとサービスに次のようなディレクトリ構造があります
/var/www/html/site1
/var/www/html/site2
/var/www/html/site3
/var/www/html/serv1
/var/www/html/serv2
site1
フォルダはウェブサイトをホストしており、site1domain.com
ホストされているウェブアプリケーションサービスserv1
とserv2
フォルダを公開して、
service1.site1domain.com
service2.site1domain.com
site1domain.conf
そこで私はこのようにファイル内の仮想ホストを設定しようとしました
<VirtualHost *:80>
ServerName site1domain.com
ServerAlias www.site1domain.com
DocumentRoot /var/www/html/site1
<Directory /var/www/html/site1>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName service1.site1domain.com
ProxyPreserveHost On
ProxyRequest Off
ProxyPass "/" "localhost/serv1"
ProxyPassReverse "/" "localhost/serv1"
</VirtualHost>
<VirtualHost *:80>
ServerName service2.site1domain.com
ProxyPreserveHost On
ProxyRequest Off
ProxyPass "/" "localhost/serv2"
ProxyPassReverse "/" "localhost/serv2"
</VirtualHost>
しかし、サービスに関連する仮想ホスト コード ブロックによりサーバーがクラッシュし、エラー コード 1 で終了します。
これらを適切に設定する方法を教えていただけませんか?
答え1
次のようにしたらどうでしょうか:
<VirtualHost *:80>
ServerName service1.site1domain.com
DocumentRoot /var/www/html/serv1
</VirtualHost>
<VirtualHost *:80>
ServerName service2.site1domain.com
DocumentRoot /var/www/html/serv2
</VirtualHost>
mod_proxyは必要ありません。
答え2
エラーの原因はProxyPass
そしてProxyPassReverse
指令がないスキームURLの一部です。正しい構文は次のようになります。
ProxyPass "/" "http://localhost/serv1"
ProxyPassReverse "/" "http://localhost/serv1"
しかし、アンドリューは正しいリバースプロキシこのユースケースでは必須ではなく、最適なテクノロジーでもありません。