【问题标题】:Can not access web app hosted on apache from local network无法从本地网络访问托管在 apache 上的 Web 应用程序
【发布时间】:2021-06-22 11:56:58
【问题描述】:

作为一个新手,在我的 linux 电脑上使用 apache httpd 设置 mediawiki。在相应的 .conf 文件中设置了“要求所有授权”。电脑被路由器分配了静态IP 192.168.0.2。电脑的 80 端口对任何设备都是开放的。我从主持人那里访问了http://192.168.0.2/mediawiki/index.php。它按预期工作。现在,我尝试从连接到同一网络的 Android 手机访问相同的地址,但 chrome 向我显示了“127.0.0.1 拒绝连接”的消息。我注意到地址栏中的http://192.168.0.2 部分已被https://127.0.0.1 替换。同样的事情也发生在我手机上的 Firefox 上。我仍然可以通过手机访问http://192.168.0.2,而且效果很好。那么这里发生了什么以及如何解决这个问题?

编辑:问题解决了。 Mediawiki 有这个 LocalSettings.php 文件,它会在安装过程中自动创建。它包含一个字段“$wgServer”,它是“在完全限定的 URL 中使用的协议和服务器名称”,如文档中所示。该值在安装过程中自动设置为“http://127.0.0.1”。因此,每当我试图从我的手机连接到 mediawiki 时,我实际上都会被重定向到同一部手机。我将值更改为“http://192.168.0.2”,现在一切正常!

【问题讨论】:

    标签: apache http connection mediawiki


    【解决方案1】:

    我的猜测是您的 apache 配置为侦听 127.0.0.1 或 localhost(这是默认设置)。打开httpd.conf 或您的虚拟主机配置文件并查找Listen。以下是官方文档中的一些 sn-ps:

    Listen 指令告诉服务器只接受指定端口或地址和端口组合上的传入请求。如果在 Listen 指令中只指定了一个端口号,则服务器在所有接口上侦听给定端口。如果给出了 IP 地址和端口,服务器将侦听给定的端口和接口。多个 Listen 指令可用于指定要侦听的多个地址和端口。服务器将响应来自任何列出的地址和端口的请求。

    例如,要使服务器接受端口 80 和端口 8000 上的连接,请在所有接口上使用:

    Listen 80
    Listen 8000
    

    要让服务器在一个接口上接受端口 80 上的连接,而在另一个接口上接受端口 8000 上的连接,请使用

    Listen 192.0.2.1:80
    Listen 192.0.2.5:8000
    

    更多信息在

    https://httpd.apache.org/docs/2.4/bind.html

    【讨论】:

    • Apache 现在的默认值为“Listen 80”。如果“Listen”指令是问题所在,我一开始就不会通过手机到达服务器。
    【解决方案2】:

    您的手机与托管网络服务器的电脑之间的连接似乎发生了一些事情。 即使您几乎没有提供任何细节,您的配置看起来也很好:根据您的描述,我怀疑问题出在您的手机或路由器上,因为域和 url 从 192.168.0.2 切换到 127.0.0.1 并且协议从http 转 https。

    您应该从连接到同一网络的另一台电脑上尝试相同的测试。 您可以更好地了解正在发生的事情,使用 curl 从命令行测试连接:

    $ curl -v http://192.168.0.2/mediawiki/index.php

    如果网络服务器是否请求重定向,输出将为您提供一些详细信息。

    【讨论】:

    • 感谢您建议以这种方式使用 curl 帮助我诊断问题。我一直认为 curl 是一些多余的软件,但是我以前从未设置过任何 Web 服务。再次感谢!
    猜你喜欢
    • 2021-11-06
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2021-06-06
    • 1970-01-01
    • 2020-02-24
    • 2021-05-14
    相关资源
    最近更新 更多