Akka HTTP不允许来自macOS远程主机的传入连接

时间:2017-04-08 18:35:13

标签: macos scala akka akka-http

我想尝试以下小例子:

object Webserver {
  def main(args: Array[String]) {

    implicit val system = ActorSystem("my-system")
    implicit val materializer = ActorMaterializer()
    // needed for the future flatMap/onComplete in the end
    implicit val executionContext = system.dispatcher

    val route =
      path("hello") {
        get {
          redirect(Uri("https://google.com"), StatusCodes.PermanentRedirect)
        }
      }

    val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)

    println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
    StdIn.readLine() // let it run until user presses return
    bindingFuture
      .flatMap(_.unbind()) // trigger unbinding from the port
      .onComplete(_ => system.terminate()) // and shutdown when done
  }
}

从macOS上的同一主机访问时,这非常有效。但是,当我远程访问主机时,我无法访问akka网络服务器。

我已经检查了我的防火墙选项,并且我验证了程序java允许传入连接。

另一个可疑的事情:当我运行python -m SimpleHTTPServer 8080时,我会看到以下窗口:

MacOS Firewall

启动mykka应用程序时,我没有这个窗口。我是否必须实现自定义逻辑以请求许可或其他什么?

1 个答案:

答案 0 :(得分:2)

要启用对服务器的远程访问,需要将服务器绑定到外部接口。要简单地绑定到所有接口,您可以将主机/ IP设置为0.0.0.0,例如:

Http().bindAndHandle(route, "0.0.0.0", 8080)