首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ProxyPass转到“/path/”而不是根“/”?

如何将ProxyPass转到“/path/”而不是根“/”?
EN

Server Fault用户
提问于 2016-02-17 09:32:35
回答 1查看 6K关注 0票数 0

我正在使用Ubuntu-15.10诡计,Apache-2.4.12

我一直试图在启用SSL的VirtualHost中使用VirtualHost,如下所示:

代码语言:javascript
复制
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日志中,我得到:

代码语言:javascript
复制
... File does not exist: /var/www/html/web, referer: https://www.example.com/myapp/

这是因为我不明白ProxyPass应该做什么吗?或者,我的配置有什么问题需要纠正吗?

增编(2016年2月18日)

我打开了mod_proxy的日志记录,我看到了以下没有意义的内容:

代码语言:javascript
复制
... 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/

EN

回答 1

Server Fault用户

发布于 2016-02-20 05:14:16

我找到了一个解决方案,但这不是我所期望的,也不是我在ProxyPass上所期望的。这可能是我的一个错误,或者文件不像应该的那样清晰。ProxyPass不能将代理的URL附加到虚拟名称的路径。因此,我必须从指定端口的目录中加载应用程序,而不是从URL的根目录加载:

代码语言:javascript
复制
ProxyPass /myapp http://127.0.0.1:8090/myapp
ProxyPassReverse /myapp http://127.0.0.1/myapp

此外,如果有需要加载的资源,例如查询、图像、脚本等,也必须使用RewriteRule

重写规则如下:

代码语言:javascript
复制
RewriteEngine On
RewriteRule ^(.*) http://0.0.0.0:8090/$1 [P,L]

我觉得还有很多其他的解决方案可能涉及到其他代理模块,也可能涉及到RewriteRule,然而,这正是我在apache中所掌握的最简单的解决方案。

因此,至少路径的第一个组件必须出现在两端,这样ProxyPass才能完成它的工作。我不能使用ProxyPath在我弥补的路径上加载,而在代理设置中没有进一步的复杂性。

我希望有人找到这个帮助的答案。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/757759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档