我有一个在虚拟机上运行的催化剂服务器。
[info] Hello powered by Catalyst 5.90103
HTTP::Server::PSGI: Accepting connections at http://0:3009/
并在虚拟机内进行连接
vagrant@precise32:/var/log/apache2$ curl 'http://localhost:3009'
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
etc ...
该端口似乎正在监听
vagrant@precise32:/var/log/apache2$ netstat -an | grep "LISTEN "
tcp 0 0 0.0.0.0:36300 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3009 0.0.0.0:* LISTEN
远程连接时我可以看到端口 80,但看不到 3009
curl 'http://localhost:80'
curl: (52) Empty reply from server
curl 'http://localhost:3009'
curl: (7) Failed to connect to localhost port 3009: Connection refused
我看过类似的帖子,但没什么帮助。这是 iptables
vagrant@precise32:/var/log/apache2$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
防火墙已关闭
vagrant@precise32:/var/log/apache2$ sudo ufw status
Status: inactive
我对 VM 还很陌生,我不确定这是主机问题、apache 问题还是 cataylst 问题。我试过运行 python 服务器,但也无法连接到它。非常感谢大家的建议。谢谢
编辑 - 我看过类似的帖子,那里的一般解决方案不是监听端口或防火墙。我认为两者都不适用于这里。
答案1
您正在尝试使用localhost
远程地址访问在端口 3009 上监听的 vagrant box 上的应用程序。要使其正常工作,您需要正确设置端口转发,如 vagrant 文档中所述:https://docs.vagrantup.com/v2/getting-started/networking.html
检查并确保它已正确设置,并且请求http://localhost:3009
已转发到 vagrant box。您还应确保本地防火墙未阻止与端口的连接。