gpt4 book ai didi

apache - jetty 通过 apache mod_proxy

转载 作者:行者123 更新时间:2023-12-04 02:13:38 25 4
gpt4 key购买 nike

使用 Apache 虚拟主机和 mod_proxy 我想访问端口 8080 上的 jetty 实例中可用的 java 应用程序(myapp)。

ProxyPass / localhost:8080/在我的 apache 虚拟主机配置中,我可以使用 www.mydomain.com/myapp 访问在 jetty 中运行的应用程序,但我希望从 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>

所以在这两种情况下,请求都会被转发到 jetty 应用程序。

我对 apache 和 jetty 很陌生,我很确定有一种更好、更优雅的方法可以达到同样的效果。
事实上 apache 提示说:
[warn] worker localhost:8080/myapp/ already used by another worker

最佳答案

问题是,当您使用上下文路径/myapp 在 jetty 中部署应用程序时,它将相应地生成所有链接。 Apache mod_proxy 在 HTTP 级别( header )进行所有重写,并且不会对响应正文做任何事情,保持原样。

如果您不介意/myapp 保留,您可以打开 mod_rewrite 并在 Location block 中包含以下两行:

RewriteEngine on
RewriteRule ^/myapp/(.*)$ /$1 [P]

如果您想永远摆脱/myapp,那么剩下的唯一选择(假设您不想在 mod_proxy_html 上浪费 CPU 资源)是配置虚拟主机,并在上下文路径为/的虚拟主机上部署应用程序。

关于apache - jetty 通过 apache mod_proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com