解決mac無法使用80埠問題,親測可用
前言:
在mac os中,非root使用者是無法使用小於1024的常用埠的。如果開發中需要用到80埠, 就要設定埠轉發。
hosts檔案介紹
(1)hosts檔案是將域名和IP地址建立對映關係的系統檔案,使用者可以自定義常用域名跟IP,當在瀏覽器上輸入網址時,系統會優先從hosts檔案找到相應的IP地址,開啟相應的網頁。
(2)hosts檔案的作用是域名解析,構建對映關係,遮蔽垃圾網站。
(3)為什麼要修改hosts檔案?
在微信公眾號開發時候,需要獲取使用者的微信資訊,如果在微信開發者工具的位址列填寫localhost就獲取不了,所以必須要填寫稽核通過的微信公眾號域名。在這裡,假設我的微信公眾號域名為:
修改hosts檔案的步驟
(1)開啟Terminal,輸入以下指令:
cd /private/etc
sudo vim hosts
開啟後,預設的hosts檔案長這樣:
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 samuel.local # added by Apache Friends XAMPP
(2)把localhost 對映為https://test.cn (改成你要對映的域名)後 ,修改後是張這樣的:
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
#127.0.0.1 localhost
127.0.0.1 test.cn
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 samuel.local # added by Apache Friends XAMPP
儲存退出。
埠轉發
域名對映完成後,需要做的是埠轉發,也就是將監聽的80埠轉發到8080。
1.建立idea.tomcat.forwarding檔案:
sudo vim /etc/pf.anchors/idea.tomcat.forwarding
在idea.tomcat.forwarding新增以下命令:
rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 443 -> 127.0.0.1 port 8443
2.建立pf-tomcat.conf檔案
sudo vim /etc/pf-tomcat.conf
在pf-tomcat.conf新增以下命令:
rdr-anchor "forwarding"
load anchor "forwarding" from "/etc/pf.anchors/idea.tomcat.forwarding"
3.啟動埠轉發功能
sudo pfctl -ef /etc/pf-tomcat.conf
如果你在終端看到以下提示,恭喜你成功啟動:
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.
No ALTQ support in kernel
ALTQ related functions disabled
pfctl: pf already enabled
4.關閉埠轉發功能
sudo pfctl -d
或者關閉全部
pfctl -F all -f /etc/pf.conf
注意事項:
重啟mac,需要手動重啟埠轉發命令
sudo pfctl -ef /etc/pf-tomcat.conf
java專案配置
在由spring boot搭建的java開發專案中,用到的開發工具是IDEA,作業系統mac OS 10.13.4。因為微信公眾號的開發需要,埠號要設定為80,
之前已經設定好埠轉發,80轉發到8080,所以在本地除錯的時候,專案的伺服器埠設定為8080,如下圖: