1. 程式人生 > >MacOS提示80埠被佔用

MacOS提示80埠被佔用

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