這是我的設定。我有一個運行安裝了 Oracle Linux 7 的虛擬機器。我啟動了 apache service httpd start
,它啟動沒有問題。我已經在 和 中建立了一個index.html
文件。我可以使用或從主機存取虛擬機,但是當我打開 Web 瀏覽器並導航到 IP 位址時,伺服器沒有回應。/var/www/html
/var/www
ping
ssh
我查了一下netstat -plent
,發現80埠正在監聽:
# netstat -plent
tcp6 0 0 :::80 :::* LISTEN 0 121584 36432/httpd
答案1
答案2
您僅根據 netstat 輸出監聽 IPv6。
您需要只使用 IPv6 存取網站,或在 apache 中建立另一個偵聽器指令來偵聽 0.0.0.0:80。在 httpd.conf 中:
Listen 0.0.0.0:80
當然,您可以僅偵聽要為其提供流量服務的 IP 位址。
不過,如果您在 Linux 中支援雙棧套接字,那麼這個建議是不正確的。您可能只需要檢查雙堆疊偵聽是否已開啟。使用 procfs 檢查此檔案:
/proc/sys/net/ipv6/bindv6only
如果不是 0,則需要在設定中將其變更為 0,或明確偵聽 IPv4。
另外,檢查您的防火牆規則;如果您拒絕 ipv4 或 ipv6 上的流量,那就可以解釋了。檢查這裡:
iptables -t filter -nvL INPUT
ip6tables -t filter -nvL INPUT
如果預設策略不是 ACCEPT,而您沒有允許 HTTP 流量進入的規則,或者您有阻止 HTTP 流量的規則,那就可以解釋了。