2013-04-11 131 views
0

我想:在SSL虚拟主机使用Apache RedirectMatch

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

我已经设置了这些虚拟主机规则。 http重定向到https,但重定向到/sweetApp/没有。

最后,我想为sweetSite.com到代理外部请求并重定向使内部服务器只看到了192.168.3.92:9080/sweetApp/

我使用Apache 2.4.3所以它应该支持基于名称的虚拟主机的SSL请求。

#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> 

回答

0

我的问题是,如果有一个proxyPass规则,它将优先于任何重定向规则。

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