Apache:获取代理,重写和SSL玩好

我在尝试将代理,重写和SSL一起集成到Apache 2中时遇到了很多麻烦。

简单的历史logging,我的应用程序运行在端口8080上,在添加SSL之前,我使用代理将8080从url去除到服务器。

因此,而不是www.example.com:8080/myapp,客户端应用程序通过www.example.com/myapp访问所有内容

这是完成这个conf:

ProxyRequests Off <Proxy */myapp> Order deny,allow Allow from all </Proxy> ProxyPass /myapp http://www.example.com:8080/myapp ProxyPassReverse /myapp http://www.example.com:8080/myapp 

我现在想要做的是强制所有的请求到myapp是HTTPS,然后让这些SSL请求遵循相同的代理规则,去掉我的应用程序用的端口号。 只需更改ProxyPass行中的端口8080到8443即可。 不幸的是,我不是Apache方面的专家,我的反复试验技巧已经到了最后。

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule myapp/* https://%{HTTP_HOST}%{REQUEST_URI} ProxyRequests Off <Proxy */myapp> Order deny,allow Allow from all </Proxy> SSLProxyEngine on ProxyPass /myapp https://www.example.com:8443/mloyalty ProxyPassReverse /myapp https://www.example.com:8433/mloyalty 

就这一点而言,除了/ myapp之外,服务器上的任何请求都可以通过http加载。 如果我向/ mypp发送一个浏览器http请求,那么它会redirect到https:// www.example.com:8443/myapp,这不是所需的行为。 应用程序中的链接然后parsing为https:// www.example.com/myapp/linkedPage,这是可取的。 浏览器请求(http和https)到任何超出/ myapp即一级的任何级别。 / myapp / mycontextparsing为不带端口的https:// www.example.com/myapp/mycontext。

我不确定还有什么其他信息可以给我,但是我认为我的目标应该是清楚的。

你的设置非常类似于我在这里得到的VirtualHost,检查差异(和文档)尝试添加R标志到你的重写规则,例如:

RewriteRule ^/(.*) https://% {HTTP_HOST}%{REQUEST_URI} [R]