0.環境准備
- 已備案的域名1個
- 帶公網ip的雲服務器1台
- 本地pc一個(待穿透)
- frp-0.30.0 的frps (github自行下載)
- nginx
1. 雲服務器上安裝Frp
#下載
wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz
#解壓
tar -zxvf frp_0.20.0_linux_amd64.tar.gz
#修改frps(frp server 服務端)
vi frps.ini
>>>
[common]
#綁定端口
bind_port = 7000
# frpc Client客戶端連接Frps服務端時的token 為了安全 建議添加
token = admin
# web端管理控制面板相關配置
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
#需要穿透http的統一訪問端口(http類型的內網穿透,必須設置vhost_http_port,並且所有的http類型的客戶端都將通過同一個vhost_http_port訪問。)
vhost_http_port = 7001
#https的訪問端口(如果需要的話)
#vhost_https_port = 7443
# 二級frp域名 三級sub子域名做saas
# 如果 frps 配置了 subdomain_host,則frpc中想自定義custom_domains 中不能是屬於 subdomain_host 的子域名或者泛域名。
subdomain_host = frp.xxx.com
<<<
#啟動服務端
#1.非后台運行
./frps -c ./frps.ini
#2.后台運行
nohup ./frps -c frps.ini & > frp.log
#查看啟動成功
netstat -anp |grep frp
2. 雲服務提供商控制台 DNS域名解析配置
需要解析共兩條A記錄:
frp.xxx.com 和 *.frp.xxx.com
例:
記錄值 | 記錄類型(A類型) | ip地址 |
---|---|---|
frp | A | ip地址 |
*.frp | A | ip地址 |
都指向你的雲服務器ip,稍等一會ping frp.xxx.com,如果能ping通說明解析成功
3. 配置Frpc Client客戶端
穿透機器/本地pc 解壓包
修改frpc.ini
>>>
#frps公共服務端配置
[common]
# 公網ip,frps所在的服務器的ip
server_addr = xxx.xxx.xxx.xxx
# frps服務端連接端口
server_port = 7000
# 連接token,與frps中的token一致
token = admin
# 定義第一個轉發
[web01]
type = http
# 本地(內網)服務的端口
local_port = 8001
# 與frps中的subdomain_host連接起來就是pc1.frp.xxx.com
subdomain = pc1
# 定義第二個轉發
[web02]
type = http
# 本地(內網)服務的端口
local_port = 8002
# 與frps中的subdomain_host連接起來完整訪問地址就是pc.frp.xxx.com
subdomain = pc
<<<
- PC cmd運行:
frpc.exe -c frpc.ini
2種訪問方式:
-
一種純域名,nginx做好做二級域名三級泛域名及反向代理,直接訪問
-
一種sub域名+穿透端口號(vhost_http_port),nginx無需做二級域名三級泛域名配置
4. 配置nginx,實現第一種訪問方式
server {
# 監聽nginx 80端口
listen 80;
# 域名配置 記得一定要加上*.frp.xxx.com + frp.xxx.com這個,只加frp.xxx.com是不行的,無法支持泛域名做sub模式
server_name *.frp.xxx.com frp.xxx.com;
location / {
proxy_pass http: //127.0.0.1:7001;
# 這個Host的header一定要加,不然轉發后frp拿不到通過哪個域名訪問的,導致轉發失敗
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- nginx重新刷新加載配置
./nginx -s reload