如何调试为什么我的 mod_proxy 给出“无协议处理程序有效”错误?

如何调试为什么我的 mod_proxy 给出“无协议处理程序有效”错误?

我正在尝试将 Apache 设置为 Docker 应用程序的前端代理。我过去曾多次这样做过,但出于某种原因,我拥有的新 Ubuntu VPS 无法配合。我使用的是 Apache/2.4.18。

我正在使用这个虚拟主机:

<VirtualHost *:80>
    ServerName blog.example.com

    ProxyPass / http://127.0.0.1:8083/
    ProxyPassReverse / http://127.0.0.1:8083/

</VirtualHost>

我已经启用了必要的模块:

a2enmod proxy
a2enmod proxy_html
a2enmod xml2enc

Apache 启动正常,但我在日志中收到此错误,另外浏览器中还出现标准 500 崩溃消息:

AH01144:没有对 URL / 有效的协议处理程序。如果您使用的是 mod_proxy 的 DSO 版本,请确保使用 LoadModule 将代理子模块包含在配置中。

网络上多次提到了这个问题,但建议基本上反映了错误消息的内容,即我需要确保代理模块已加载。我可以 100% 确认它们已加载 - 事实上,如果我LoadModule在 vhost 配置中复制命令,Apache 将无法启动,因为模块已加载。

从这里看它们也同样装载了:

$ apachectl -M | grep proxy
 proxy_module (shared)
 proxy_html_module (shared)

我可以确认 Docker 应用程序正在提供 HTTP 响应(无论如何我认为它还没有到达那么远):

root@agnes:~# wget localhost:8083
--2018-04-02 19:04:46--  http://localhost:8083/
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:8083... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7 [text/html]
Saving to: ‘index.html’

index.html                                                  100%[=========================================================================================================================================>]       7  --.-KB/s    in 0s      

2018-04-02 19:04:46 (1.20 MB/s) - ‘index.html’ saved [7/7]

root@agnes:~# cat index.html 
Hello

我很困惑,不知道我可能还遇到了什么其他问题。进一步研究这个问题并不容易,因为搜索引擎结果被一个似乎不适用于我的情况的常见答案淹没了。

答案1

需要加载mod_proxy_http才能代理http协议。

相关内容