권한 있는 포트에서 Tomcat 실행

기본적으로 Tomcat은 HTTP용 포트 8080과 HTTPS용 포트 8443에서 수신 대기합니다. Tomcat이 표준 HTTP(80) 및 HTTPS(443) 포트에서 수신하도록 하려면 쉽지 않습니다. 1024 미만의 포트는 Linux에서 권한 있는 포트로 간주되고 루트로 실행되는 프로세스에서만 사용할 수 있기 때문입니다. Tomcat을 루트로 실행하는 것은 매우(매우!) 나쁜 생각입니다.

리버스 프록시



리버스 프록시 또는 HAProxy와 같은 로드 밸런서를 프록시 포트 443에서 8443으로 구성할 수 있습니다.
  • HAProxy(Red Hat 파생 배포판에 sudo yum install haproxy 및 Debian 파생 배포판에 sudo apt install haproxy)를 설치합니다.

  • HAProxy를 시작하고 부팅 시 다시 시작하도록 구성합니다.

    $ sudo systemctl start haproxy
    $ sudo systemctl enable haproxy
    


  • 수정/etc/haproxy/haproxy.cfg 및 추가:

    # Enable Access on 443 (SSL Passthrough)
    frontend tomcat-proxy
        mode            tcp
        bind            :443
        timeout client  5s
        default_backend tomcat
    
    backend tomcat
        mode            tcp
        timeout connect 5s
        timeout server  5s
        server          tomcat server.example.com:8443
    

  • Tomcatserver.xml을 수정하고 proxyPort=443<Connector>를 추가합니다. proxyPort 속성은 Tomcat이 프록시 서버 뒤에서 실행될 때 사용됩니다. 이 속성은 request.getServerPort() 메서드를 호출하는 웹 응용 프로그램에 반환되는 값을 수정합니다. 이 메서드는 리디렉션을 위한 절대 URL을 구성하는 데 자주 사용됩니다. 이 속성을 구성하지 않으면 반환된 값은 클라이언트가 원래 요청을 보낸 포트가 아니라 프록시 서버에서 연결을 수신한 포트를 반영합니다. 자세한 내용은 Tomcat 설명서의 Proxy Support을 참조하십시오.

  • 인증 바인드



    authbind 유틸리티를 사용하면 권한 있는 포트에 액세스하기 위해 일반적으로 수퍼유저 권한이 필요한 프로그램을 권한 없는 사용자로 실행할 수 있습니다. 이를 통해 시스템 관리자는 특정 사용자 및 그룹 액세스를 허용하여 1024 미만의 TCP 및 UDP 포트에 바인딩할 수 있습니다.
  • authbind를 설치합니다. Debian 파생 배포판에서는 sudo apt install authbind 로 이 작업을 수행할 수 있습니다. Red Hat 파생 배포판의 리포지토리에서는 사용할 수 없지만 사용 가능한 pre-rolled RPM이 있습니다. 다운로드하여 sudo yum *.rpm로 설치합니다.

  • 권한이 없는 사용자에게 포트 443에 액세스할 수 있는 권한을 부여합니다. 배포판의 리포지토리에서 Tomcat을 설치한 경우 Tomcat 사용자가 실행할 수 있습니다.

    $ sudo touch /etc/authbind/byport/443
    $ sudo chmod 500 /etc/authbind/byport/443
    $ sudo chown tomcat /etc/authbind/byport/443
    

  • Tomcatserver.xml을 수정하고 포트 443을 수신하도록 Tomcat을 구성합니다.

  • Tomcat을 시작하는 명령 앞에 /usr/bin/authbind --deep 를 붙입니다. systemd를 사용하여 Tomcat을 시작하는 경우 ExecStart는 다음과 같이 표시됩니다.

    ExecStart=/usr/bin/authbind --deep /opt/apache-tomcat-8.5.30/bin/startup.sh
    

    일반적으로 authbind는 직접 호출하는 프로그램만 bind의 특수 버전에 의해 영향을 받도록 조정합니다. --deep 를 지정하면 해당 프로그램이 직접 또는 간접적으로 호출하는 모든 프로그램이 authbind에 의해 설정된 환경 변수를 설정 해제하지 않는 한 영향을 받습니다.

  • JSVC



    Jsvc는 Java 응용 프로그램을 Unix에서 보다 쉽게 ​​실행할 수 있도록 하는 라이브러리 및 응용 프로그램 집합입니다. documentation에 따르면 "Jsvc는 응용 프로그램(예: Tomcat)이 일부 권한이 있는 작업을 루트로 수행한 다음(예: 포트 < 1024에 바인드) ID를 권한이 없는 사용자로 전환하도록 허용합니다."나는 그것을 시도했지만 결코 작동시킬 수 없었고 온라인 설명서와 예제가 드문 것 같아서 포기했습니다.

    좋은 웹페이지 즐겨찾기