我想在我的一台计算机(戴尔台式机)上设置一个 Web 服务器,并决定使用 CentOS 作为操作系统。 Apache 已正确安装(我认为。pgrep httpd 返回一堆正在运行的进程)。我还认为我的 httpd.conf 文件没问题(我已经阅读了大约 4 个关于 apache 设置的教程)。我的 ISP 是康卡斯特。我的 httpd 监听端口 80 和 8080。
但它不起作用,我不明白为什么。我有一个朋友尝试查看我的 test.html 页面(位于 /var/www/html/ - 它应该在的位置。),他收到 http 错误 504,这似乎与代理或防火墙有关,两者都没有我有。
我有几个问题:1)有没有办法在不让外部朋友尝试查看我的网页的情况下测试我的设置?当我使用本地地址 (192.168.1.5) 作为 url 时,我自己在服务器上的浏览器可以正常看到该页面,但我网络上另一台计算机 (192.168.1.3) 上的浏览器无法看到该页面。 2) 运行网络服务器具体需要什么?只是一个正确配置的apache?假设我不需要 php 或任何 sql 功能。 3)康卡斯特是否有可能以某种方式搞乱了系统? 4)我自己的路由器是否有可能以某种方式搞乱系统(如果是的话,看不到它)?
我似乎无法附加我的 httpd.conf 文件。我不想将其剪切并粘贴到此处,因为它太长了(即使删除了评论)。
答案1
默认情况下,CentOS 的防火墙 (iptables) 设置为不允许端口 80 上的传入流量。
运行此命令以允许端口 80 上的传入流量:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
然后运行以下命令来保存配置:
/sbin/service iptables save
这些命令需要以 root 身份运行。无需重新启动任何服务即可使更改生效。
有关 CentOS iptables 的更多信息可以在 CentOS.org 的 wiki 中找到如何做部分。
关于您的朋友无法连接的问题:
您的路由器很可能将他拒之门外。康卡斯特电缆调制解调器也可能将他拒之门外。
默认情况下,大多数路由器都设置为使用 DHCP 和路由。这意味着您的路由器已根据自己的 IP 范围、子网掩码和网关为您的计算机分配了一个内部 IP 地址。来自 ISP 分配的 IP 地址的所有流量都会通过路由器路由到路由器通过 DHCP 分配给您的计算机的 IP 地址。
为了允许来自端口 8080 上的外部源的流量通过路由器,您需要设置从指定端口上的外部源到路由器分配的 IP 地址的端口转发。这在路由器配置中完成。
另一种方法是将您的计算机置于 DMZ(非军事区)中,这将允许所有传入和传出的流量都不会被过滤到该计算机。请注意,这是一个巨大的安全风险,不建议这样做。但是,如果您选择这样做,此设置也常见于路由器配置中。
答案2
1) 服务器可能已配置为仅允许来自本地主机的连接。检查指令的配置allow
。您可能希望限制公众访问您的 Web 内容目录。这很可能/var/www
或/srv/www
。您还可能会阻止传入的 Web 访问iptables
。
2)简单的html Apache就够了。我相信它仍然是互联网上占主导地位的网络服务器。
3) 像 Comcast 这样的 ISP 阻止对端口 80 的访问是很常见的。ISP 通常不会阻止对端口 8080 的访问。
4) 要允许您的朋友从 Internet 连接,您需要将端口 8080 和/或端口 80 端口转发到您的网络服务器 (192.168.1.3)。如果两个地址都使用 WiFi 连接并启用了隔离,则可能会在本地引起问题。
以下设置允许访问 下的内容/var/www
。它还启用了一些选项。您的配置中应该有类似的内容。
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
答案3
如果您认为它是 iptables(防火墙),service iptables stop
如果您无法从同一子网中的计算机获取它,请尝试浏览。
为了让朋友能够在家里的环境中通过简单的 ISP(例如 Comcast、AT&T(动态 IP))访问您的网页,则:
- 找出您当前的公共 IP 地址。
- 为您的 Web 服务器设置 DHCP 保留,以便它接收相同的 IP 地址。
- 在路由器上设置端口转发,将端口 80 流量转发到内部网络服务器。
答案4
这看起来像是路由器问题。为了确保您可以在同一网络上的另一台计算机上看到该页面,请确保您可以从路由器页面转发端口。就你的情况而言,最有可能的是