12

首先,我只想看看它不是 ec2 控制台中的安全组设置。因为我可以设置apache,这是错误的80端口,并且能够通过80端口访问apache网站。但是对于 tomcat,如果我使用端口 8080(默认)或大于 1023 的一些值(我认为这个端口),它就可以工作。但是当我更改 server.xml(将 8080 更改为 80)时,如果我使用 80 端口,它无法工作,我成功启动服务,但没有 80/http 监听。我知道这应该是一些权限问题(只有root可以在1023端口以下启动服务)。但我不知道该怎么做。

4

3 回答 3

30

对于这个问题,我个人的选择是使用iptables将所有流量从端口 80 重定向到运行 Tomcat 的上端口(例如 8080)。

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
/sbin/iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
于 2012-09-18T09:52:03.600 回答
2

我以前这样做的方法是使用 Apache2 作为使用虚拟主机的代理,并代理到 Tomcat。这将处理请求,如果将来您决定使用多个 Tomcat 进行负载平衡,也可以用作负载平衡器。

于 2012-09-18T11:48:07.223 回答
1

将 Tomcat 配置为在 Linux 上的特权端口上运行的一种常见方法是使用authbind

以下是 Ubuntu 16.04 上 Tomcat 7 的设置步骤。

首先确保已安装 authbind:

sudo apt-get install authbind

编辑/etc/default/tomcat7并取消注释这一行:

AUTHBIND=yes

为端口 80 创建绑定权限文件:

sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown tomcat7 /etc/authbind/byport/80

如果您还使用 https,请对端口 443 执行与上述相同的操作。

于 2012-09-17T20:32:49.937 回答