MacOS提示80埠被佔用
阿新 • • 發佈:2019-02-14
Intellij IDEA上把tomcat的預設埠改成80,執行web應用時提示80埠被佔用
使用lsof -i:80命令找不到是哪個程式佔用了80埠
由於 Mac 系統限制非root使用者不能啟動1024以下埠,而我們平時使用Mac一般都是非root使用者,所以如果想啟動80埠必須用root使用者。
比如啟動nginx,必須使用sudo nginx ,但是如果用root許可權啟動nginx或tomcat又會造成, 啟動建立的各類檔案是root的,普通使用者無法刪除。
為此, 我們可以通過pfctl做網路層的埠轉發, 讓連線到本機80埠的請求, 都轉發到9090埠
解決方法:
sudo vim /etc/pf.conf
pf.conf是對順序強要求的, 所以注意新增的內容放的順序
在 rdr-anchor "com.apple/*" 這一行的後面新增一行
rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 9090
其中lo0是綁定了127.0.0.1的網路裝置名稱,具體可以使用ifconfig檢視
在tomcat的配置中,設定啟動埠為9090
讓埠轉發馬上生效
sudo pfctl -d
sudo pfctl -f /etc/pf.conf
sudo pfctl -e
ps: 啟用之前請先停掉其他佔用80埠的程序,比如nginx