【问题标题】:Setup mod_proxy on apache http server在 apache http 服务器上设置 mod_proxy
【发布时间】:2013-07-02 18:31:42
【问题描述】:

我想使用 apache web 服务器从我的 tomcat 服务器反向代理 web 服务。我已经修改了 httpd.conf

LoadModule proxy_module modules/mod_proxy.so

<Directory />
    AllowOverride none
    Require all denied
</Directory>

ProxyPass         /ROOT  http://localhost:8080/ROOT
ProxyPassReverse  /ROOT  http://localhost:8080/ROOT

我的 Tomcat 服务器在 8080 端口上运行,现在当我运行 localhost/ROOT 时,我收到错误 500 internal server error。

error_log 中的最后一个条目是:

[Thu Jul 04 14:17:00.097359 2013] [proxy:warn] [pid 18980:tid 4476780544] [client 127.0.0.1:50525] AH01144:没有协议处理程序对 URL /ROOT 有效。如果您使用的是 mod_proxy 的 DSO 版本,请确保代理子模块包含在使用 LoadModule 的配置中。 access_log 中的最后一个条目是: 127.0.0.1 - - [04/Jul/2013:14:17:00 -0400]“GET /ROOT HTTP/1.1”500 528

知道我在这里做错了什么吗?

【问题讨论】:

标签: apache tomcat apache2


【解决方案1】:

所以花了一些时间,但我想出了办法。还有一个模块需要加载。这就是 httpd.conf 的样子

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<Directory />
    AllowOverride none
    Require all denied
</Directory>

ProxyPass         /ROOT  http://localhost:8080/ROOT
ProxyPassReverse  /ROOT  http://localhost:8080/ROOT

这肯定有效。 :)

【讨论】:

  • sudo a2enmod proxysudo a2enmod proxy_httpsudo service apache2 restart
  • 这个 proxy_http 是必需的!
  • 来自我使用 mod_proxy 和 mod_proxy_ajp 多年的世界,您需要在非 java 配置中将 ajp 替换为 http 模块。线索是 Apache 日志中的这个错误:AH01144: No protocol handler was valid for the URL
【解决方案2】:

由于容易忽略,请关注@muka的评论:

sudo a2enmod proxy  
sudo a2enmod proxy_http  
sudo service apache2 restart

确保启用proxyproxy_http 两个模块!

【讨论】:

  • ^这让我摆脱了 20 小时的痛苦。谢谢!
【解决方案3】:

除了其他很好的答案之外,如果您要代理到 https 端点,您需要启用 mod_ssl 并将 SSLProxyEngine on 添加到您的虚拟主机

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 2020-09-16
    • 2012-06-14
    • 2014-01-21
    • 2019-07-01
    • 1970-01-01
    相关资源
    最近更新 更多