
我有多個網站和服務的以下目錄結構
/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
資料夾中的 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
該錯誤是由您造成的ProxyPass
和ProxyPassReverse
指令沒有方案網址的一部分。正確的語法是例如
ProxyPass "/" "http://localhost/serv1"
ProxyPassReverse "/" "http://localhost/serv1"
然而,安德魯是正確的反向代理對於此用例來說,這不是必需的,也不是最佳技術。