使用 Apache 虚拟主机和 mod_proxy 我想访问端口 8080 上的码头实例中可用的 java 应用程序(myapp)。
通过ProxyPass / localhost:8080/
我的 apache 虚拟主机配置,我可以使用 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