Как изменить порт tomcat8 с 8080 на 80

Я использую tomcat8, и я изменил http-порт в cofg/server.xml как

В http-коннекторе я изменил порт 8080 на 80

< Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

Я перезапустил tomcat, но у меня есть эта ошибка

apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1  11 Sep 2018]
18-Jun-2019 18:20:46.933 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-80"]
18-Jun-2019 18:20:46.961 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-80]]
 org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-80]]
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:113)

Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:996)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
        ... 12 more
Caused by: java.net.SocketException: Permission denied
        at java.base/sun.nio.ch.Net.bind0(Native Method)
        at java.base/sun.nio.ch.Net.bind(Net.java:461)

Пожалуйста, помогите мне, как запустить tomcat8 на порту 80. У меня выше ошибка после изменения порта внутри server.xml


person php king    schedule 20.06.2019    source источник
comment
Возможный дубликат Как изменить порт Tomcat с 8080 до 80?   -  person user7294900    schedule 20.06.2019
comment
@user7294900 после того, как etc/default/tomcat7 установил AUTHBIND=yes, я могу запустить tomcat на порту 80, но теперь я вызываю URL ipaddress/ApplicationPath , тогда у меня истекло время ожидания подключения в браузере, я также установил authbind . Если я запустил команду curl внутри сервера, например curl ipaddress/ApplicationPath, то она даст мне правильный ответ. Пожалуйста, помогите мне что это за проблема   -  person php king    schedule 20.06.2019


Ответы (1)


Порт 80 является привилегированным портом. У вас есть несколько вариантов:

  • Используйте прокси-сервер, например haproxy, для привязки к порту 80, а затем перенаправьте на tomcat 8080.
  • Используйте authbind, чтобы разрешить tomcat привязываться к порту 80.
  • Использовать перенаправление ядра iptables с 80 на 8080

Второе и третье [незначительно] лучше по производительности, поскольку они происходят в ядре, но вы увидите какое-либо увеличение задержки или пропускной способности только на действительно очень загруженных серверах.

person Jonathan S. Fisher    schedule 21.06.2019