我正在使用Ubuntu-15.10诡计,Apache-2.4.12
我一直试图在启用SSL的VirtualHost中使用VirtualHost,如下所示:
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass /myapp/ http://127.0.0.1:8090/
ProxyPassReverse /myapp/ http://127.0.0.1:8090/使用上面的配置,我假设服务器在该端口上所提供的任何服务,例如web将被附加到https://www.example.com/myapp/web。
然而,这不是我所得到的。在Apache日志中,我得到:
... File does not exist: /var/www/html/web, referer: https://www.example.com/myapp/这是因为我不明白ProxyPass应该做什么吗?或者,我的配置有什么问题需要纠正吗?
增编(2016年2月18日)
我打开了mod_proxy的日志记录,我看到了以下没有意义的内容:
... connecting http://127.0.0.1:8090/ to 127.0.0.1:8090
... connected / to 127.0.0.1:8090
... fam 2 socket created to 127.0.0.1
... connection established with 127.0.0.1:8090 (127.0.0.1)
... connection complete to 127.0.0.1:8090 (127.0.0.1)
... http: has released connection for (127.0.0.1)
... proxy: connection shutdown我假设第一行中的一个地址是内部占位符,另一个地址是被检索的URL。但是在第二行中,检索到的url为什么要连接到/,而不是按照ProxyPass连接到/myapp/?
发布于 2016-02-20 05:14:16
我找到了一个解决方案,但这不是我所期望的,也不是我在ProxyPass上所期望的。这可能是我的一个错误,或者文件不像应该的那样清晰。ProxyPass不能将代理的URL附加到虚拟名称的路径。因此,我必须从指定端口的目录中加载应用程序,而不是从URL的根目录加载:
ProxyPass /myapp http://127.0.0.1:8090/myapp
ProxyPassReverse /myapp http://127.0.0.1/myapp此外,如果有需要加载的资源,例如查询、图像、脚本等,也必须使用RewriteRule。
重写规则如下:
RewriteEngine On
RewriteRule ^(.*) http://0.0.0.0:8090/$1 [P,L]我觉得还有很多其他的解决方案可能涉及到其他代理模块,也可能涉及到RewriteRule,然而,这正是我在apache中所掌握的最简单的解决方案。
因此,至少路径的第一个组件必须出现在两端,这样ProxyPass才能完成它的工作。我不能使用ProxyPath在我弥补的路径上加载,而在代理设置中没有进一步的复杂性。
我希望有人找到这个帮助的答案。
https://serverfault.com/questions/757759
复制相似问题