我在mac os x上啟動tomcat的時候,報 java.net.BindException: Permission denied <null>:80,java.net.BindException: Permission denied <null>:443錯誤,443時因為我要棄用ssl服務。
Mac OS X 因為要綁定1024以下的端口需要ROOT權限, 但是如果用root權限啟動eclipse或tomcat又會造成, 啟動創建的各類文件是root的,普通用戶無法刪除。
為此, 我們可以通過pfctl做網絡層的端口轉發, 讓連接到本機80端口的請求, 都轉發到9090端口; (注意, Mac OS 會使用80端口做網絡文件共享, 要先關閉掉)。
1、修改/etc/pf.conf, 使用sudo vim /etc/pf.conf打開
2、添加rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080,rdr on lo0 inet proto tcp from any to 127.0.0.1 port 443 -> 127.0.0.1 port 8443 到pf.conf文件的rdr-anchor "com.apple/*" 這一行后面。pf.conf是對順序強要求的, 所以注意添加的內容放的順序。lo0 通過ifconfig 看自己那個設備綁定的是127.0.0.1, lo0是這個網絡設備的名字。這個不用動,直接用。
3、最后,運行命令sudo pfctl -f /etc/pf.conf重新載入配置文件,以及運行命令sudo pfctl -e,啟用新的配置
若要解除端口映射,可運行命令sudo pfctl -d
做好以上配置后,你本地訪問80端口的時候會跳轉到8080,443跳轉到8443,8080,8443 這個端口你自己定。