tomcat6이 포트 80에 바인딩되지 않는 이유는 무엇입니까?

tomcat6이 포트 80에 바인딩되지 않는 이유는 무엇입니까?

나는 포트 80에서 tomcat을 실행하는 것의 의미를 알고 있지만 빠른 해결책을 찾고 있습니다. 이거 따라해보려고 하는데지도 시간. 나는 두 가지 변경 사항을 적용하여 튜토리얼을 따랐습니다.

  • tomcat6은 사용자 이름입니다. tomcat은 다음으로 실행됩니다.
  • Tomcat conf 파일의 위치:/usr/share/tomcat6/bin/catalina.sh

하지만 여전히 권한 오류가 발생합니다. Java에서는 포트 80에 바인딩할 수 없다고 합니다. 또 어떻게 해야 합니까? 사람들이 디버깅할 수 있도록 어떤 다른 정보를 제공해야 합니까? 확인하자면 포트 80에서 실행되는 다른 항목은 없습니다.

답변1

/etc/default/tomcat6다음과 같이 AUTOBIND 속성을 "yes"로 변경할 수 있습니다 .

AUTHBIND=yes

Tomcat을 다시 시작하면 사용 가능한 권한 있는 포트(1-1023)를 사용할 수 있습니다.

답변2

Tomcat 구성을 실제로 건드리지 않고 이를 수행하는 두 가지 방법이 있습니다.

포트 80에서 포트 8080으로 트래픽을 리디렉션하는 iptables 스크립트를 만들 수 있습니다(그러면 Tomcat 설정을 조작할 필요가 없습니다).

iptables용

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80 트릭을 할 것입니다! (uppstart에서 자동으로 수행되도록 스크립트를 작성하십시오.

또는 이를 통해 Tomcat 서버에 대한 연결을 실제로 프록시하는 Apache 역방향 프록시를 만들 수 있습니다(실제로 요청을 캐시하고 연결 속도를 높일 수 있으므로 좋습니다).

답변3

Tomcat HTTP 커넥터에서 포트 80의 커넥터가 127.1이 아닌 모든 인터페이스 또는 0.0.0.0에 바인딩되어 있는지 확인하세요. 이는 다음과 같은 URL에 연결할 수 없는 이유를 설명할 수 있습니다. http://10.0.0.2:80 하지만 당신은 할 수 있습니다 http://127.1:80

답변4

authbind를 사용하여 Tomcat 서비스를 시작하면 사용자가 1024 미만의 포트를 시작할 수 있으며 리디렉션이나 iptables가 필요하지 않습니다.

apt-get 설치 authbind -y

Authbind 소프트웨어를 설치하려면

chmod -R 755 /etc/authbind

그룹은 사용자 그룹이어야 합니다.

chown -Rh 루트:그룹 /etc/authbind

그 후 아래 명령을 실행하십시오.

CD /etc/authbind/byuid

예를 들어 사용자 ID가 2000이라고 가정하면 사용자 ID 번호를 사용할 수 있습니다.

에코 '0.0.0.0/0:1,1023' > 2000

해당 파일은 사용자와 그룹이 소유해야 합니다.

초운 : 2000

chmod 700 2000

Tomcat 시작 파일 $CATALINA_BASE/startup.sh에 아래 줄을 추가합니다.

export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"

Authbind 서비스 start.sh를 사용하여 Tomcat을 시작하는 경우

아래 줄에 주석을 달아주세요

#$CATALINA_HOME/bin/startup.sh

이 끝을 파일의 끝으로 추가

AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c " 

$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh   

이제 1024개 미만의 포트를 가진 사용자로 Tomcat 서비스를 시작할 수 있습니다.

관련 정보