如何配置com.sun.net.httpserver只接受来自localhost的请求?

时间:2018-06-09 03:52:06

标签: java httpserver

我使用com.sun.net.httpserver.HttpServer来处理一些http请求。我的http服务器在nginx后面运行,它映射服务器域名并将请求转发到我的服务器,将其用作在某个端口运行的代理。我的http服务器在访问运行服务器的端口时会接受所有请求。我想要一种机制,以便服务器只接受来自应该可用的域的请求,就像我使用nginx一样。我想如果我可以强制http服务器只能通过localhost访问它会有所帮助。

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

  

我想如果我可以强制http服务器只能通过localhost访问它会有所帮助。

HttpServer实例侦听(仅)绑定到的IP地址的请求。所以将它绑定到这样的环回IP地址:

InetAddress localHost = InetAddress.getLoopbackAddress();
InetSocketAddress sockAddr = new InetSocketAddress(localHost, 80);
HttpServer server = HttpServer.create(sockAddr, 0);

更一般地说,如果您只想接受来自给定IP地址集的请求,一种方法是在您的处理程序中调用HttpExchange::getRemoteAddress并在远程地址不是您想要的情况下正确行动。但请注意,远程地址将成为直接的上游IP地址。它可以是您的反向代理,也可以是远程用户使用的某些转发代理。