內網穿透之FRP-開發者利器

假設一個場景:假設我開發了一套了博客系統,在我本地電腦裏運行着,假設運行的端口是8080,那麼我自己在本地瀏覽器訪問http:localhost:8080 就可以訪問自己的博客系統。但是假設我想外界訪問我自己的系統,他們是無法訪問到我電腦的應用,這是因爲我電腦主機不是公網ip,DNS是無法解析到我的電腦上來,想必大家也清楚這一點。一般做法是,買一臺雲服務器,假設是買了一臺阿里雲的服務器,並且自己買了個域名,假設雲服務器的公網ip是123.123.123.123 ,域名是www.myblog.com, 那麼我們在域名解析那裏將域名解析到公網ip上,然後將自己的應用打個包上傳到阿里雲服務器中運行,然後部署相關的運行環境,比如數據庫,緩存等,然後運行在80端口,然後我們外界就可以訪問www.myblog.com就可以訪問到博客系統。這樣做起來似乎沒啥問題,但是其中需要做的部署工作量也是不小的,假設我只是將我係統演示給別人看,或者改點小功能或者部分代碼,又要重新打包部署到服務器上,這樣子看起比較麻煩。FRP就很方便簡化這種常見,它能讓我們無需將應用部署到雲服務器中,讓外界一樣訪問到我們本地應用,那樣子對於開發者而言,在自己的IDE開發工具上,邊修改代碼,在本地運行後,外界訪問同本地是一樣的,那樣子是不是很爽。

那什麼是frp?frp 是一個可用於內網穿透的高性能的反向代理應用,支持 tcp, udp 協議,爲 http 和 https 應用協議提供了額外的能力,且嘗試性支持了點對點穿透

frp的github網址:https://github.com/fatedier/frp

使用示例

假設以上述的博客系統爲例(訪問http://www.myblog.com就能訪問本地電腦的博客網站)。

 我們還是要準備一臺能供外界訪問的雲服務器。

frp的版本信息:https://github.com/fatedier/frp/releases/ ,建議去該網站看看,目前更新到v0.30.0。假設雲服務器的環境是linux-centos7環境:

 一、登錄到自己的雲服務器,下載frp:

##下載最新版的frp_0.30.0_linux_amd64.tar.gz
wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz
##解壓
tar -zxvf https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz

由於官網下載比較慢,如果是國內服務器訪問下載會非常慢,如果快點,需要資源包,我可以幫你下,下好發給你。

解壓之後,目錄結構如下:

frp分爲服務端和客戶端,能被外網訪問的雲服務器需要安裝frps,而我們本地電腦需要安裝frpc

結構介紹:

frpc  -- 是客戶端的命令工具

frpc_full.ini -- 是客戶端的詳細配置文件

frpc.ini -- 客戶端簡單配置文件

frps -- 服務端的命令工具

frps_full.ini -- 是服務端的詳細配置文件

frps.ini -- 服務端簡單配置文件

LICENSE 版權協議信息,frp是開源的,遵守apache2.0開源協議

systemd 其實我們下載解壓frp之後,就是一個可執行二進制程序,那麼如需要開機自動啓動或重啓服務十分不方便,那麼就可以藉助systemd

於是瞭解以上信息,我們在雲服務器上只需要配置frps端就可以,後面在自己本地電腦配置frpc端。

修改frps.ini文件

# /root/conf/frps.ini
[common]
#frps運行的端口
bind_port=7700
#自己隨意設置,但服務端與客戶端需要設置一致,相當於通信的口令,如果不設置token,其他客戶端都可以連到#服務端,不安全
token=qadbjadjhjB213132

# 使用http協議 運行到80端口
vhost_http_port=80

#圖形化監控工具,可以不設置
dashboard_port=7500
dashboard_user=admin
dashboard_pwd=ujfan19941103

然後執行 frps -c frps.ini 進行啓動服務端

二、在自己本地下載frp,配置客戶端

假設我們本地是window系統,那麼在https://github.com/fatedier/frp/releases/ 找到window版本的frp,同樣我們下載

然後解壓後可以看到:

目錄結構和linux一樣的,在客戶端我們只需要配置frpc.ini即可

# frpc.ini
[common]
# 你自己的雲服務器的ip
server_addr = 123.123.123.123
# frps運行的端口,就是上面你設置的端口
server_port = 7700
# token口令,需要和上面設置的一致
token=qadbjadjhjB213132

[ssh]
# 使用http協議
type = http
# 默認即可
local_ip = 127.0.0.1
# 本地項目運行的端口
local_port = 80
# 域名
custom_domains = www.myblog.com

然後在cmd窗口執行:frpc.exe  -c  frpc.ini 進行啓動,然後大功告成了,在瀏覽器訪問www.myblog.com就可以訪問到自己本地的博客系統。

frp的功能不僅如此,更多詳細配置請參考官網文檔:https://github.com/fatedier/frp/blob/master/README_zh.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章