需求描述:
公司內部一台式機配置很好,出現閑置,為資源充分利用,搭建應用測試環境,但是應用啟動后,局限於無法給外地同事or客戶訪問;需要讓內網服務可以提供給外部互聯網訪問;
主流實現方式,花生殼,Ngrok,natapp,frp。。。
大致分商業收費和免費開源,各有優勢,商業收費的相對穩定。有商業需求的小伙伴,百度下關鍵字。
方案選擇:
這里選擇免費了開源的frp,
frp主頁: http://frp.xxorg.com/
frp項目地址:https://github.com/fatedier/frp
實現原理:
開始配置「兩種場景」:
1. 准備工作
(1)一台可以外網訪問的服務器(例:雲服務器,假設IP是:172.100.100.188)--必須
(2)公司內網台式機 --必須
(3)如果需要配置多個應用,准備若干域名 --非必須
2. 下載源代碼: https://github.com/fatedier/frp/releases
根據自己實際環境,下載對應程序版本,這里阿里雲服務器操作系統用的Ubuntu16.04 ,公司台式機操作系統CentOS7, 注意frp雖然分“服務端”和"客戶端",但是程序代碼是不區分的,也就是一套代碼里包含了"服務端"和"客戶端",這里選擇下載的版本是:frp_0.33.0_linux_amd64.tar.gz
程序解壓后,目錄結構,顯示如下文件:
frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE nohup.out systemd
frpc_full.ini frpc.ini 是客戶端(內網服務器)需要修改的配置文件
frps_full.ini frps.ini 是服務端(雲服務器)需要修改的配置文件
frpc_full.ini frps_full.ini是比較詳細的客戶端&服務端配置文件,一般場景的使用,我們不需要修改這兩個文件,
只要分別修改兩個最小配置文件:frpc.ini frps.ini 就能滿足日常的需求。
3. 場景1配置:基本的外網IP+端口訪問
a. 配置服務端(阿里雲服務器)
將下載的文件上傳到雲服務器,解壓后進入程序目錄,
修改服務端配置文件:frps_full.ini
默認配置:
[common] bind_port = 7000
不用修改,啟動frp服務端程序:
nohup ./frps -c ./frps.ini 2>&1 &
b. 配置客戶端(公司內網台式機)
在修改frp客戶端配置前,
先把內網已經部署好的測試應用系統服務啟動起來,假設我們的系統應用服務訪問方式是:127.0.0.1:8080
然后將frp程序包上傳到內網台式機,解壓,修改客戶端配置文件frpc.ini。
[common] server_addr = 172.100.100.188 ---服務端IP,即:你的雲服務器IP server_port = 7000 ---對應frp服務端配置 [test] type = tcp ---注意類型要寫tcp local_ip = 127.0.0.1 ---內網服務IP local_port = 8080 ---本地端口 remote_port = 8080 ---遠程訪問端口
type即穿透類型一般分為HTTP,HTTPS及TCP三種,其中HTTP和HTTPS是作為Web網站穿透服務,而TCP一般用於其他服務連接使用,比如Linux服務器的SSH登陸,Windows的3389遠程桌面,等無需使用瀏覽器訪問的場景.
啟動frp客戶端服務:
nohup ./frpc -c ./frpc.ini 2>&1 &
測試驗證一把,是否配置成功!
打開瀏覽器,地址欄輸入雲服務器地址+IP,172.100.100.188:8080,是否能訪問到我們的內網系統。
4. 場景2配置: 多域名映射內網多個應用
上邊我們已經測試了,外網IP+端口 通過tcp協議訪問內網系統的配置;
接下來,配置下多個域名映射內網多個應用系統的場景。
操作步驟不變,還是先配置服務端,再修改客戶端配置文件。
准備工作:
1. 將多個二級域名解析到我們的雲服務器地址(172.100.100.188)
例如: app1.beijing.com 解析到: 172.100.100.188 app2.beijing.com 解析到:172.100.100.188
2. 公司台式機上,部署多個系統,並將程序啟動,這里以兩個應用系統為例,假設系統內網訪問地址為:
---應用系統-app1-訪問地址: 127.0.0.1:8088 ---應用系統-app2-訪問地址: 127.0.0.1:8099
3. 修改frp服務端(雲服務器)配置文件: frps.ini
[common] bind_port = 7000 vhost_http_port = 6001 ---原先配置不變,增加主機映射端口6001
啟動frp server端服務
nohup ./frps -c ./frps.ini 2>&1 &
4. 修改frp客戶端(內網服務器)配置文件: frpc.ini
[common] server_addr = 172.100.100.188 server_port = 7000 [app1] type = http remote_port = 6001 local_port = 8088 custom_domains = app1.beijing.com [app2] type = http remote_port = 6001 local_port = 8099 custom_domains = app2.beijing.com
啟動frp客戶端服務:
nohup ./frpc -c ./frpc.ini 2>&1 &
驗證:
瀏覽器地址欄,分別輸入:app1.beijing.com:6001 和 app2.beijing.com:6001 看能否訪問子系統。
注意,上邊端口都是寫6001。
5. 注意事項:
雲服務器開放相應的端口,如上邊例子中的:7000和6001
內網服務器,要關閉防火牆或開放相應的端口對外訪問
OK,到這里frp基本的配置使用已完成,小伙伴們可以參考,這里只是介紹了兩種常見的使用場景,其他更多的靈活配置,可以參考下邊的幾個鏈接。
參考:
官方配置教程:https://github.com/fatedier/frp/blob/master/README_zh.md https://www.appinn.com/frp/ https://www.jianshu.com/p/6ae5c771ba89 https://blog.csdn.net/u013144287/article/details/78589643/ https://www.jianshu.com/p/0342d083e17b https://github.com/fatedier/frp/issues/287 https://github.com/fatedier/frp/issues/1189 https://blog.csdn.net/luohongtuCSDN/article/details/88966774 https://www.jianshu.com/p/00c79df1aaf0 https://cloud.tencent.com/developer/article/1437854