简体   繁体   中英

Akka HTTP not allowing incoming connections from remote hosts on macOS

I wanted to try out the following small example:

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
  }
}

This works perfectly when accessing from the same host on macOS. However, when I am accessing the host remotely, I can't access the akka webserver.

I have checked my Firewall options and I verified that the program java allows incoming connections.

One more suspicious thing: When I run python -m SimpleHTTPServer 8080 , I get the following window:

MacOS防火墙

I don't get this window when starting my akka application. Do I have to implement custom logic to ask for permission or something?

To enable remote access to your server, you need to bind your server to the external interface. To simply bind to all interfaces, you can set the host/IP to 0.0.0.0 , like:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM