呃,我说不明白,我真的很沮丧:
<VirtualHost *:80>
servername domain1.com.au
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Proxy *>
Order Allow,Deny
Allow from all
</Proxy>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
<VirtualHost *:443>
servername domain1.com.au
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/owncloud.pem
SSLCertificateKeyFile /etc/apache2/ssl/owncloud.key
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:*>
Servername domain2.com.au
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / https://192.168.1.12/
ProxyPassReverse / https://192.168.1.12/
</VirtualHost>
不确定我是否清楚我想做什么,但我已经读了又读,还是不明白。
基本上,我有一台可以正常工作的 Apache 服务器,并通过重写强制使用 HTTPS,如前两个 VirtualHost 条目所示。我现在在另一台服务器上设置了一个 Webmail 服务,使用另一个域名,但我只有一个传入公共 IP 地址。
因此,我尝试将第二个域的任何传入请求代理到另一台服务器以访问网络邮件,无论其端口是 80 还是 443。
IMAP 和 POP3 没有问题,我可以将端口直接转发到正确的服务器。
上述配置的结果是,对 domain2.com.au(端口 80 或 443)的请求被转发到https://domain1.com.au。
我走的方向正确吗?
答案1
您需要NameVirtualHost
在配置中设置才能Servername
有效。
NameVirtualHost *:80
NameVirtualHost *:443
如果您不设置它,最后一个块将优先并覆盖先前的 VirtualHost 配置。
看文档了解详情。