如何为 apache2、jetty 配置 mod_proxy

如何为 apache2、jetty 配置 mod_proxy

目前,我是这样设置环境的。端口 80 上的 apache2 实例。同一台服务器上的 Jetty 实例位于端口 8090 上。

用例:

  • 当我访问 foo.com 时,我应该看到托管在 jetty 端口 8090 上的 webapp。

  • 如果我输入 foo.com/blog,我应该会看到托管在 apache 上的 wordpress 博客。(我在网上阅读了操作指南,并使用 AMP 进行了安装。)

以下是我的各种配置文件:

/etc/apache2/mods-enabled/proxy.conf:

ProxyPass / http://foo.com:8090/   << this is the jetty server

ProxyPass /blog http://foo.com/blog

ProxyRequests On
ProxyVia On

<Proxy *>
 Order deny,allow
 Allow from all
</Proxy>

ProxyPreserveHost On

ProxyStatus On

/etc/apache2/httpd.conf:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so

我没有在 sites-available 或 sites-enabled 中创建任何其他文件。

现在的情况:

  • 如果我访问 foo.com,我会看到 webapp。
  • 如果我访问 foo.com/blog,我会看到

HTTP 错误 404

访问 /errors/404.html 时出现问题。原因:

NOT_FOUND 由 jetty:// 提供支持

  • 如果我注释掉第一个 ProxyPass 行,那么在 foo.com 上,我只会看到主页,没有应用 CSS,即只有文本。
  • .. 访问 foo.com/blog 时出现以下错误:

代理服务器从上游服务器接收到无效响应。

代理服务器无法处理请求 GET /blog。

原因:从远程服务器读取时出错

  • 我也无法访问 /phpmyadmin,出现与上述相同的 404 NOT_FOUND 错误。

我正在 Amazon EC2 实例上运行 Debian squeeze。

问题:我哪里做错了?我应该在 proxy.conf(或其他 conf 文件)中做哪些更改才能访问博客?

答案1

如果我理解正确的话你需要更换这一行

ProxyPass /blog http://foo.com/blog

用这行

ProxyPass /blog/ !

这指示 apache2 服务器不要代理以 /blog 开头的任何内容,我认为这就是您想要的。

更新:官方文档在这里:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

相关内容