Как настроить com.sun.net.httpserver на прием только запросов от localhost? - PullRequest
0 голосов
/ 09 июня 2018

Я использую com.sun.net.httpserver.HttpServer для обработки некоторых http-запросов.Мой http-сервер работает за nginx, который отображает доменные имена серверов и пересылает запросы на мой сервер, используя его в качестве прокси-сервера, работающего на определенном порту.Мой http-сервер принимает все запросы, если они получают доступ к порту, на котором работает сервер.Мне нужен механизм, чтобы сервер принимал только запросы от домена, который должен быть доступен, то же самое, что я использую с nginx.Я думаю, это помогло бы, если бы я мог заставить http-сервер быть доступным только для localhost.

Каков наилучший способ достичь этого?

1 Ответ

0 голосов
/ 09 июня 2018

Полагаю, было бы полезно, если бы я мог заставить 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-адресом.Это может быть ваш обратный прокси-сервер или какой-либо прямой прокси-сервер, используемый удаленным пользователем.

...