Apache mod_proxy

Apache mod_proxy

呃,我说不明白,我真的很沮丧:

    <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 配置。

文档了解详情。

相关内容