【发布时间】:2011-04-04 00:15:56
【问题描述】:
使用 Apache 虚拟主机和 mod_proxy 我想访问端口 8080 上的码头实例中可用的 java 应用程序 (myapp)。
在我的 apache 虚拟主机配置中使用 ProxyPass / localhost:8080/,我可以使用 www.mydomain.com/myapp 访问在码头中运行的应用程序,但我希望从 www.mydomain.com 访问该应用程序。
尝试使用ProxyPass / localhost:8080/myapp 找不到应用程序,因为请求变为 www.mydomain.com/myappmyapp/。
然后尝试:
<Location />
ProxyPass localhost:8080/myapp/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
我可以访问该应用程序,但仅限于第一个请求。后续请求变为 www.mydomain.com/myappmyapp/
多次阅读 wiki.eclipse.org/Jetty/Tutorial/Apache 和 apache mod_proxy 文档后,我设法从 www.mydomain.com 正确使用该应用程序的唯一方法是使用以下配置:
<Location /myapp/>
ProxyPass localhost:8080/myapp/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
<Location />
ProxyPass localhost:8080/myapp/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
所以在这两种情况下,请求都会被转发到码头应用程序。
我对 apache 和 jetty 还很陌生,我很确定有更好、更优雅的方法可以达到同样的效果。 事实上 apache 抱怨说:
[warn] worker localhost:8080/myapp/ already used by another worker
【问题讨论】:
-
我必须删除 localhost 之前的所有 http:// 等等,否则它们会被检测为超链接,并且不允许在帖子中使用
标签: apache proxy jetty location proxypass