Apache 代理不适用于本地主机端口

ksc*_*rke 17 mod-proxy apache-2.2

我在端口 80 上运行 Apache 2.2.15,并希望在本地主机端口 8983 上代理 servlet 引擎。我在另一台服务器上运行设置,但已转移到 CentOS 6 机器。它不适用于新机器。我的虚拟主机配置:

代理请求关闭

<代理*>
   订单拒绝,允许
   所有人都允许
</代理>

ProxyPass / http://localhost:8983/
ProxyPassReverse / http://localhost:8983/

如果我使用浏览器并直接访问它(并且不通过 Apache 代理),我可以访问端口 8983,但如果我访问/通过 Apache 服务器,则无法连接到它。

我可以将代理的内容更改为http://slashdot.org并且 Slashdot 成功代理(所以我知道它通常能够代理)。

我在 Apache 中打开调试登录,这是事务:

[Sun Apr 22 16:47:04 2012] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //localhost:8983/
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(1506): [client 184.39.79.7] 代理:http: found worker http://localhost:8983/ for http://localhost:8983/
[Sun Apr 22 16:47:04 2012] [debug] mod_proxy.c(998):运行方案 http 处理程序(尝试 0)
[Sun Apr 22 16:47:04 2012] [debug] mod_proxy_http.c(1962): 代理: HTTP: 服务 URL http://localhost:8983/
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(2011):代理:HTTP:已获得(本地主机)的连接
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(2067):代理:将 http://localhost:8983/ 连接到 localhost:8983
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(2193): proxy: connected / to localhost:8983
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(2444): proxy: HTTP: fam 10 socket created to connect to localhost
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(2455): (13)Permission denied: proxy: HTTP: 尝试连接到 [::1]:8983 (localhost) 失败
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(2444): proxy: HTTP: fam 2 socket created to connect to localhost
[Sun Apr 22 16:47:04 2012] [error] (13)Permission denied: proxy: HTTP: 尝试连接到 127.0.0.1:8983 (localhost) 失败
[2012 年 4 月 22 日星期日 16:47:04] [错误] ap_proxy_connect_backend 为(本地主机)禁用工作器
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(2029): 代理: HTTP: 已释放 (localhost) 的连接
[Sun Apr 22 16:47:04 2012] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //localhost:8983/favicon.ico
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(1506): [client 184.39.79.7] 代理:http: found worker http://localhost:8983/ for http://localhost:8983/图标
[Sun Apr 22 16:47:04 2012] [debug] mod_proxy.c(998):运行方案 http 处理程序(尝试 0)
[Sun Apr 22 16:47:04 2012] [debug] mod_proxy_http.c(1962): 代理: HTTP: 服务 URL http://localhost:8983/favicon.ico
[Sun Apr 22 16:47:04 2012] [debug] proxy_util.c(1949): proxy: HTTP: 重试 (localhost) 的工作程序
[Sun Apr 22 16:47:04 2012] [错误] 代理:HTTP:已禁用(本地主机)连接

我不知道 fam 10 或 fam 2 插槽是什么。任何人都知道为什么它不代理到我的备用端口?

谢谢!

ksc*_*rke 12

我解决了我的问题:

如果我做: sestatus -b | grep httpd

我能看到的httpd_can_network_connectoff

解决方法是输入: togglesebool httpd_can_network_connect

  • 不确定 `togglesebool` 来自哪里(不是在我的 CentOS7-minimal 上)并且网络建议即使你确实有 `togglesebool` __只有“内存中”的值被改变了”__。但是 `setsebool -P httpd_can_network_connect=1`为我工作; -P 让它在重启后存活。谢谢你的提示! (4认同)

小智 10

这是您的问题的解决方案:

要打开此布尔值,您只需使用此行(root 权限)

setsebool -P httpd_can_network_connect on
Run Code Online (Sandbox Code Playgroud)

或者

sudo setsebool -P httpd_can_network_connect on
Run Code Online (Sandbox Code Playgroud)

希望有帮助。参考这里:https : //wiki.centos.org/TipsAndTricks/SelinuxBooleans