为什么Tomcat使用端口8080而不是80?

Dom*_*nik 17 java linux port tomcat firewall

我已经在端口8080下启动并测试了Tomcat(默认).现在我将连接器端口更改为80并重新启动Tomcat,在我的最小Debian 6.0安装中没有显示任何内容.现在这里的诀窍在哪里?

<Connector port="80" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           URIEncoding="UTF-8"
           redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)

Dom*_*nik 31

转到/ etc/default/tomcat6并更改#AUTHBIND=noAUTHBIND=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
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 11

两个典型的原因:

  • 您很可能没有权限侦听低于1024的端口(通常需要管理权限,例如存在root)
  • 其他东西可能已经在端口80上监听(例如apache)


roo*_*top 9

你是否以root身份在端口80上启动Tomcat?您必须是root才能绑定到Linux中的端口<= 1024.

  • 值得注意的是:将Tomcat作为"root"启动通常是一个坏主意,安全方面,除非能够(并配置)在绑定后将其用户切换到非特权用户(上次我检查时不可能) . (6认同)

Jes*_*sus 9

如果之前没有任何评论(就像它发生在我身上),你可以将流量从端口引导808080.

去做吧:

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 
Run Code Online (Sandbox Code Playgroud)