Springboot - прослушивает привилегированный порт (программно) - PullRequest
0 голосов
/ 04 июня 2018

Я хочу, чтобы мое приложение SpringBoot перенаправляло запрос, отправленный на порт 81, на порт 8080 (это порт, к которому привязано приложение).Однако приложение не запускается при запуске, так как вам не разрешено использовать привилегированный порт.

Я знаю, что есть решение, использующее root-доступ или что-то вроде apache2 для перенаправления, но если возможно, я бы хотелпрограммное решение, использующее только мое приложение SpringBoot, без внешней конфигурации.

Это мой файл конфигурации для перенаправления портов (он работает, если я переключаю 81 на любой порт более 1024):

import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class EmbeddedTomcatConfiguration {

    private static final String PROTOCOL_HTTP = "HTTP/1.1";
    private static final String SCHEME_HTTP = "http";
    private static final long ASYNC_TIMEOUT = 20000;
    private static final int REDIRECT_PORT = 8080;
    private static final int LISTENING_PORT = 81;

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        final TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
        tomcat.addAdditionalTomcatConnectors(createConnector());
        return tomcat;
    }

    private Connector createConnector() {
        Connector connector = new Connector(PROTOCOL_HTTP);
        connector.setScheme(SCHEME_HTTP);
        connector.setPort(LISTENING_PORT);
        connector.setRedirectPort(REDIRECT_PORT);
        connector.setSecure(false);
        connector.setAsyncTimeout(ASYNC_TIMEOUT);
        return connector;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...