Почему Tomcat работает с портом 8080, а не с 80?

Я запустил и протестировал Tomcat под портом 8080 (по умолчанию). Теперь я изменил порт коннектора на 80 и перезапустил Tomcat, в моей минимальной установке Debian 6.0 ничего не будет отображаться. Теперь, где трюк здесь?

<Connector port="80" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           URIEncoding="UTF-8"
           redirectPort="8443" />

person Dominik    schedule 04.05.2012    source источник
comment
Возможно, вы получили BindException в catalina.out? Есть большая вероятность, что что-то еще в системе уже привязано к порту 80.   -  person Marko Topolnik    schedule 04.05.2012
comment
Возможно, на этом порту уже запущена другая служба.   -  person juergen d    schedule 04.05.2012
comment
Первое, что нужно сделать: посмотреть журналы (в каталоге tomcat/logs)   -  person Denys Séguret    schedule 04.05.2012
comment
Я хотел бы проверить журнал, в /etc/tomcat6 его нет, где, скорее всего, будет папка журнала?   -  person Dominik    schedule 04.05.2012
comment
@Jack Murphy: (не ответ, отсюда и комментарий) как бы то ни было, я никогда не запускал Tomcat от имени пользователя root, не использовал sudo'ed или что-то в этом роде. На самом деле в Linux я даже не устанавливаю Java от имени пользователя root: я устанавливаю Java под учетной записью пользователя, используя привилегии только этого пользователя. Затем я запускаю Tomcat на портах 8080/8443. Однако система настроена (как root) для прозрачного перенаправления порта 80 на 8080 и т. д. (используя iptables).   -  person TacticalCoder    schedule 21.07.2012
comment
Возможный дубликат: stackoverflow.com/questions/12464926/   -  person amos    schedule 01.09.2014


Ответы (7)


перейдите в /etc/default/tomcat6 и измените #AUTHBIND=no на AUTHBIND=yes

 # If you run Tomcat on port numbers that are all higher than 1023, then you
 # do not need authbind.  It is used for binding Tomcat to lower port numbers.
 # NOTE: authbind works only with IPv4.  Do not enable it when using IPv6.
 # (yes/no, default: no)
 #AUTHBIND=no
person Dominik    schedule 04.05.2012
comment
см. также thelowedown .wordpress.com/2010/08/17/ - person Dominik; 04.05.2012

Две типичные причины:

  • Вполне возможно, что у вас нет разрешения на прослушивание порта ниже 1024 (обычно требуются права администратора, например, root)
  • Что-то еще может уже прослушивать порт 80 (например, apache)
person Jon Skeet    schedule 04.05.2012
comment
@Romain: Ну, root или аналогичная привилегированная учетная запись. Отредактировал, чтобы уточнить. Я полагаю, что 1024 будет нормально (т.е. только 0-1023 требуют привилегий, но я могу ошибаться) - person Jon Skeet; 04.05.2012
comment
Ничто другое не прослушивает порт 80. Я root, но я запускаю его с /etc/init.d/tomcat6 start - person Dominik; 04.05.2012

Если ничего из прокомментированного ранее не работает (как это случилось со мной), вы можете направить трафик с порта 80 на порт 8080.

To do it:

http://forum.slicehost.com/index.php?p=/discussion/2497/iptables-redirect-port-80-to-port-8080/p1

В двух словах, введите эти три команды в терминале:

$ sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 
person Jesus    schedule 09.04.2013
comment
это будет просто крайний случай, как вы упомянули, если ничего из прокомментированного ранее не сработало. - person emecas; 09.04.2013
comment
Другие читатели видят кое-что, что я упустил: * Это просто и достигает цели без необходимости установки и администрирования authbind. * Tomcat прослушивает порты с низким номером. * Tomcat работает как непривилегированный пользователь. Почему это крайнее решение? - person rich p; 26.09.2014
comment
Это решение не самое лучшее, потому что конечный пользователь увидит номер порта в своем URL-адресе и увидит изменение URL-адреса. - person alexk; 26.02.2016
comment
@alexk У меня нет проблемы с изменением URL-адреса с этим решением - я знаю, что это действительно старая тема. - person Gonza; 13.09.2019

Вы запустили Tomcat на порту 80 как root? Вы должны быть root для привязки к портам ‹= 1024 в Linux.

person rooftop    schedule 04.05.2012
comment
Стоит отметить: запуск Tomcat как root, как правило, плохая идея с точки зрения безопасности, если только он не может (и не настроен) переключить своего пользователя на непривилегированного пользователя после привязки (что было невозможно в прошлый раз, когда я проверял). - person Romain; 04.05.2012
comment
Я запустил Tomcat, используя /etc/init.d/tomcat6 start, войдя в систему с учетной записью root. Могу ли я изменить его, чтобы я мог запускать его через порт 80? - person Dominik; 04.05.2012
comment
Файлы конфигурации tomcat — это то, что определяет, какой порт использовать, то, как вы запускаете процесс, на самом деле не имеет значения. Скорее всего, у вас есть что-то еще, прослушивающее порт 80. Попробуйте запустить: netstat -an | grep 80 Это сообщит вам, если что-то уже прослушивает порт 80. - person rooftop; 04.05.2012
comment
@Romain, что бы вы сказали, это лучший способ сделать Tomcat доступным через порт 80? Установите сервер Apache httpd и Tomcat, а затем используйте сервер Apache httpd для прокси-сервера Tomcat с помощью mod_proxy? - person Arya; 07.11.2017
comment
@arya Я так понимаю - Tomcat + какой-нибудь обратный прокси (Apache, Nginx, все, что лучше всего подходит для вашего варианта использования) - person Romain; 15.02.2018

Запустите сценарий запуска от имени пользователя root после изменения привязки.

sudo ./<path to tomcat bin director>/startup.sh
person Arvind Sridharan    schedule 18.10.2013
comment
Идеальное решение, спасло мой день - person Mohan Seth; 30.07.2016
comment
Правильный ответ для * nix, но как насчет Windows? - person Koray Tugay; 30.10.2016

остановите службу apache, а затем запустите tomcat, все должно быть хорошо, по умолчанию apache работает на порту 80

person Satya    schedule 04.05.2012
comment
А как насчет того факта, что порты ‹= 1024 являются привилегированными? - person Romain; 04.05.2012
comment
Ничто в ОП не упоминает об этом. Вы не должны предполагать. - person Romain; 04.05.2012
comment
Я почти уверен, что на 80 ничего не работает, так как это базовый Debian с установленным только SSH, я добавил java и tomcat с помощью apt-get. - person Dominik; 04.05.2012
comment
На 80-м порту не запущен ни Apache, ни что-либо еще. - person Dominik; 04.05.2012

Вы можете использовать authbind/privbind или возможности для привязки к порту 80.

person user1462586    schedule 27.06.2014