Debian

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

  • December 3, 2020

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

/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>

但是與服務相關的虛擬主機程式碼塊導致伺服器崩潰:exit with error code 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。

該錯誤是由您的ProxyPassProxyPassReverse指令沒有 URL 的方案部分引起的。正確的語法是例如

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

但是,Andrew 是正確的,因為此案例不需要反向代理,也不需要最佳技術。

引用自:https://serverfault.com/questions/1044576