如果我嘗試在本機上使用 ProxyPass 將不同的服務公開為子網域,則 Apache 會崩潰

如果我嘗試在本機上使用 ProxyPass 將不同的服務公開為子網域,則 Apache 會崩潰

我有多個網站和服務的以下目錄結構

/var/www/html/site1
/var/www/html/site2
/var/www/html/site3
/var/www/html/serv1
/var/www/html/serv2

site1資料夾託管一個網站,site1domain.com我想公開託管在serv1serv2資料夾中的 webapp 服務,以便將它們顯示為

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

該錯誤是由您造成的ProxyPassProxyPassReverse指令沒有方案網址的一部分。正確的語法是例如

ProxyPass "/" "http://localhost/serv1" 
ProxyPassReverse "/" "http://localhost/serv1"

然而,安德魯是正確的反向代理對於此用例來說,這不是必需的,也不是最佳技術。

相關內容