在SSL Vhost中使用Apache RedirectMatch

时间:2013-04-11 17:20:19

标签: apache redirect proxy mod-proxy

我想:

  • /的https请求重定向到/sweetApp/
  • 将所有http请求重定向到https
  • 重定向后,代理请求内部IP地址

我已经设置了这些vhost规则。 http到https重定向的工作正常,但重定向到/sweetApp/却没有。

最后,我希望外部请求sweetSite.com进行代理和重定向,以便内部服务器只能看到192.168.3.92:9080/sweetApp/的请求

我正在使用Apache 2.4.3,所以它应该支持基于名称的ssl vhosts。

#Redirect to SSL
<VirtualHost *:80>
ServerName sweetSite.com
RedirectMatch ^/$ https://sweetSite.com/
</VirtualHost>

# The Real McCoy
<VirtualHost *:443>
ServerName sweetSite.com

#Map to /sweetApp/ by default
RedirectMatch ^/$ /sweetApp/

SSLEngine On
SSLProxyEngine On
SSLCertificateFile ssl/certificate.crt
SSLCertificateKeyFile ssl/certificate.key

#SSL to HTTP Proxy
ProxyPass / http://192.168.3.92:9080/
ProxyPassReverse / http://192.168.3.92:9080/
</VirtualHost>

1 个答案:

答案 0 :(得分:0)

问题在于,如果存在proxyPass规则,则优先于任何重定向规则。

因为我需要这台机器同时执行重定向和代理,我能找到的唯一解决方案是使用mod_rewrite来“代理”并将网址更改为/sweetApp/