我在 Ubuntu Server 15.04 上运行 Apache2。为了简单起见,我删除了中间的所有路由器。目前,我的服务器直接连接到互联网。我的家庭网络中只有一台计算机。
我想要的只是这个 -
我运行curl 127.0.0.1
以在本地访问网站。或者在我的浏览器中输入localhost
应该会显示我的网站。
我curl ipecho.net/plain | curl
在其他机器上运行以访问同一个网站。或者输入http://<my ip addr>
应该让我看到我的网站。
但不幸的是,我无法这样做。截至目前,我只能在本地访问我的网页,即通过输入localhost
。我无法在互联网上查看此网站。我尝试过不同的端口(80, 72, 8090, 44346)
,但徒劳无功。我做错了什么?我只想通过互联网访问我的网站。
答案1
您说您的服务器现在直接连接到互联网。您可以从该服务器上的浏览器访问网站吗?平外部系统是否成功?例如,是否ping google.com
成功工作?您能从外部系统 ping 通您的服务器吗?如果您不知道其他系统需要用来访问您的服务器的外部 IP 地址,您可以通过在服务器上打开浏览器并访问来确定该 IP 地址我的 IP 是什么。
如果你的系统上运行了防火墙软件,例如,iptables,您需要配置防火墙软件以允许入站连接到端口 80。对于 iptables,该命令sudo iptables -L
将显示当前的防火墙规则。您可以使用 允许入站连接到端口 80,sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
或者您可以安装 Uncomplicated Firewall (UFW) 包以简化 iptables 防火墙规则的管理,sudo apt-get install ufw
然后使用以下命令启用它并允许入站端口 80 连接:
sudo ufw enable
sudo ufw allow 80
看如何在 Ubuntu 和 Debian 云服务器上使用 UFW 设置防火墙有关使用 UFW 的更多信息。
如果您确实可以从服务器访问互联网,并且防火墙软件没有阻止从外部系统访问该服务器,那么问题可能出在 Apache Web 服务器软件的配置上。检查 Apache 的/etc/httpd/conf/httpd.conf
配置文件。查找以下行:
Listen 80
该行将允许 Apache 监听系统所有 IP 地址上的端口 80 的连接。如果您看到的是Listen 127.0.0.1 80
,则它只监听本地主机地址。
httpd.conf
该文件或您网站的虚拟主机文件中是否有类似以下内容的部分/etc/httpd/conf.d
?
<Directory />
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>
Deny from all
后面跟着的语句只Allow from 127.0.0.1
允许从本地主机地址进行访问。