我必须配置一个反向代理来将 HTTPs 请求重定向到另一个也运行 HTTPs 的主机,但我被卡住了
以下是我的 Apache 上的虚拟主机配置,作为反向代理
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mail.mydomain.com
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
SSLProxyEngine on
<Proxy "*">
Order allow,deny
Allow from all
</Proxy>
ProxyPass / https://192.168.1.6/webmail/
ProxyPassReverse / https://192.168.1.6/webmail/
ErrorLog /var/log/apache2/webmail_log
CustomLog /var/log/apache2/webmail-access_log combined
</VirtualHost>
在我的浏览器上我使用这个地址http://mail.mydomain.com
但它只将请求重定向到反向代理服务器上的 HTTP,而不是邮件主机上的 HTTP。
谢谢大家
答案1
我还没有设置 https 反向代理,但我马上就要设置了
据我所知,您的代理定义在错误的地方。
您的 RewriteRule 将您从 http 虚拟主机重定向到 https 虚拟主机,因此代理配置必须放到那里。
编辑: 基本上我的意思是:
从端口 80 上的虚拟主机中删除代理
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mail.mydomain.com
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
ErrorLog /var/log/apache2/webmail_log
CustomLog /var/log/apache2/webmail-access_log combined
</VirtualHost>
并将其添加到监听端口 443 (https) 的虚拟主机
<VirtualHost *:443>
... 其他 vhost 配置....
SSLProxyEngine on
<Proxy "*">
Order allow,deny
Allow from all
</Proxy>
ProxyPass / https://192.168.1.6/webmail/
ProxyPassReverse / https://192.168.1.6/webmail/
</VirtualHost>
我还没有测试过这个确切的设置,但我认为它应该像这样工作......