我有一个 Go 程序(完整程序见此要点https://gist.github.com/42a45b3926e733ef7b34),当我在本地计算机上运行时,会启动一个服务器并处理两个路由 localhost:8080 和 localhost:8080/login。它通过监听端口 8080 并提供服务来实现这一点
错误:= http.ListenAndServe(“:8080”,无)
我在 ubuntu 服务器上安装了 Go,并且能够运行该程序,但是,当我转到我的 IP 地址 107.170.XX.XX:8080 和/或 107.170.XX.XX:8080/login 时,我的浏览器似乎正在尝试连接,然后我收到一条消息,提示页面不可用
为了运行这个程序,我假设远程服务器上的 IP 地址与本地机器上的 localhost 类似,如果我只是在本地机器上运行 Go 程序并可以在浏览器中查看它,那么我是否应该能够通过转到 IP 地址在远程机器上执行相同操作?
为了连接到我的 IP 地址上的程序,我是否需要设置其他类型的配置?
请注意,当我配置 IP 表时,是为了接收 SSH 端口 22 上的连接和 Web 流量端口 80 上的连接。
答案1
现代浏览器的问题在于,为了方便用户,它们隐藏了底层的错误信息。
尝试使用 telnet 访问你的程序
远程登录 107.170.xxx.xx 8080
如果超时,则可能是防火墙阻止了您。如果立即返回,则可能是您的程序未正确绑定到 ubuntu 服务器上,或者防火墙拒绝了您的请求。
注意:您写了您已允许防火墙端口 80,但写入您的程序位于 8080。因此您将使用防火墙将您的程序与所有人隔离开来。
检查服务器上的 netstat 以查看您的程序绑定到哪里:
网络状态监测
这将列出所有打开监听套接字的程序及其进程 ID/名称(如果您是 root 或它们的所有者)。如果您的程序绑定到某个外部地址或临时端口“::”,则它只能是防火墙。
如果您的程序正在监听 127.0.0.1,则只能在同一系统上访问它。