![為什麼tomcat6不綁定80埠?](https://rvso.com/image/959228/%E7%82%BA%E4%BB%80%E9%BA%BCtomcat6%E4%B8%8D%E7%B6%81%E5%AE%9A80%E5%9F%A0%EF%BC%9F.png)
我知道在連接埠 80 上運行 tomcat 的影響,但我需要一個快速的解決方案。我正在嘗試遵循這個教學。我按照教程進行了兩處更改:
- tomcat6 是使用者名稱 tomcat 運行為
- tomcatconf檔案位置:
/usr/share/tomcat6/bin/catalina.sh
但我仍然收到權限錯誤。 Java 說它無法綁定到連接埠 80。我還應該提供哪些其他資訊供人們調試?只是為了確認,在連接埠 80 上沒有其他任何東西在運行
答案1
您可以將 AUTOBIND 屬性變更/etc/default/tomcat6
為“yes”,如下所示:
AUTHBIND=yes
重新啟動 Tomcat,這將使您能夠使用可用的特權連接埠 (1-1023)。
答案2
有兩種不同的方法可以做到這一點,而無需實際接觸 tomcat 配置。
您可以製作一個 iptables 腳本,將流量從連接埠 80 重定向到連接埠 8080(這樣您就不需要擺弄 tomcat 設定)
對於 iptables
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80
就可以了! (製作腳本,以便在 uppstart 上自動完成
或者您可以建立一個 Apache 反向代理,透過它實際代理到 Tomcat 伺服器的連線(這很好,因為它實際上可以快取請求並為您加速連線)
答案3
在 Tomcat HTTP 連接器中,請確保連接埠 80 上的連接器綁定到所有介面或 0.0.0.0 ,而不僅僅是 127.1 。這可能可以解釋為什麼您無法連接諸如 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 root:群組 /etc/authbind
之後運行以下命令
cd /etc/authbind/byuid
例如,假設使用者 ID 為 2000,您可以使用您的使用者 ID 號
回顯'0.0.0.0/0:1,1023'> 2000
該文件應該由使用者和群組擁有。
週:2000
修改 700 2000
在 tomcat 啟動檔案 $CATALINA_BASE/startup.sh 中新增以下行
export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
使用Authbind服務startup.sh啟動tomcat
評論以下行
#$CATALINA_HOME/bin/startup.sh
添加 This End 作為文件末尾
AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c "
$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh
現在您應該能夠以少於 1024 個連接埠的使用者身分啟動 tomcat 服務。