Frp做內(nèi)網(wǎng)穿透訪問家里的Web網(wǎng)站
大廠云做活動經(jīng)常是1H 1G 1M的帶寬,機(jī)器性能有限,如果web業(yè)務(wù)稍微大一些,可能連Mysql都跑不動。我們可以利用frp做內(nèi)網(wǎng)穿透去訪問家用電腦上的web服務(wù)。至少家用電腦是真材實(shí)料的物理核心。也可以充分利用帶寬。
frp做內(nèi)網(wǎng)穿透訪問家里的Web網(wǎng)站frp做內(nèi)網(wǎng)穿透訪問家里的Web網(wǎng)站
服務(wù)器端配置
服務(wù)器端的配置,參考之前的文章:【教你用FRP做內(nèi)網(wǎng)穿透 使用遠(yuǎn)程桌面連接家里的windows電腦】
參考之前的文章,在之前文章的基礎(chǔ)上再加一個"vhost_http_port"參數(shù),用于接收 HTTP 請求。服務(wù)器端的防火墻或者寶塔面板之類的,放行frp用到的端口。需要額外注意,這里的演示的服務(wù)器端我用nginx監(jiān)聽了80端口,把來自域名的訪問轉(zhuǎn)發(fā)到frps使用的8080端口。當(dāng)然你也可以直接讓frps使用80端口。
- [common]
- bind_addr=0.0.0.0
- bind_port = 7000
- vhost_http_port = 8080
- token=12310086
- dashboard_port = 7500
- dashboard_user = admin
- dashboard_pwd = admin123
用 frps執(zhí)行修改的文件
- ./frps -c frps.ini
內(nèi)網(wǎng)提供Web服務(wù)的機(jī)器設(shè)置
內(nèi)網(wǎng)提供Web端機(jī)器設(shè)置如下
- [common]
- server_addr = 服務(wù)器IP
- server_port = 7000
- token=12310086
- [http]#連接名稱隨意設(shè)置,見名知意即可
- type = http
- local_ip = 127.0.0.1
- local_port = 80
- use_encryption = false
- use_compression = true
- custom_domains = frp.xxxx.cn #你的域名
說明
"use_encryption"是否啟用加密,我這里選擇不啟用,可以根據(jù)情況啟用。
"use_compression"是否壓縮數(shù)據(jù),壓縮了傳輸速度會快那么一些,自行測試快多少。
"custom_domains"是綁定的訪問域名,必須設(shè)置,不設(shè)置無法啟動frpc。
- ./frpc -c frpc.ini
當(dāng)frpc連上frps時候,在frps端會有反饋,面板里也能看到有一個新連接。
然后把綁定的域名解析到服務(wù)器端的ip上,就可以用域名訪問到內(nèi)網(wǎng)的機(jī)器了。訪問時候frps會有連接提示。
如果frpc沒有啟動會報下面錯誤。
訪問控制
如果希望加上一層訪問控制,在frpc.ini對應(yīng)的http服務(wù)配置中加上"http_user"和“http_pwd”參數(shù):
- http_user = admin
- http_pwd = admin
- [common]
- server_addr = 服務(wù)器IP
- server_port = 7000
- token=12310086
- [http]#連接名稱隨意設(shè)置,見名知意即可
- type = http
- local_ip = 127.0.0.1
- local_port = 80
- use_encryption = false
- use_compression = true
- http_user = admin
- http_pwd = admin
- custom_domains = frp.xxxx.cn #你的域名
執(zhí)行流程
- 內(nèi)網(wǎng)端的80端口運(yùn)行著網(wǎng)站。
- 內(nèi)網(wǎng)端的frpc讀取配置,把內(nèi)網(wǎng)機(jī)器的80端口轉(zhuǎn)發(fā)到服務(wù)器端的8080端口。
- 在服務(wù)器端用nginx監(jiān)聽了80端口,把來自域名的訪問請求轉(zhuǎn)發(fā)到frps監(jiān)聽的8080端口。
- 服務(wù)器端的8080端口又把請求轉(zhuǎn)發(fā)到內(nèi)網(wǎng)的80端口上。
- 就這樣反復(fù)橫跳,實(shí)現(xiàn)了通過外網(wǎng)訪問內(nèi)網(wǎng)的web服務(wù)。
注意事項
- 盡管服務(wù)器端的frps在監(jiān)聽轉(zhuǎn)發(fā)8080端口,直接訪問公網(wǎng)IP:8080無效。
- 如果同一個內(nèi)網(wǎng)服務(wù)需要綁定多個域名,"custom_domains" 用英文","加其他域名。
- https證書在服務(wù)器端的nginx上配置,也可以使用frp插件在內(nèi)網(wǎng)端配置
其 他
如果frp反代網(wǎng)站全程只需要一個域名,不同的服務(wù)對應(yīng)不同的二級域名,frps加一個"subdomain_host"參數(shù),參數(shù)值填沒有前綴的域名,frpc加一個"subdomain"參數(shù),參數(shù)值只填域名前綴。,比如我們要訪問frp.example.com和tomcat.example.com,兩個域名都解析到公網(wǎng)服務(wù)器上
frps.ini
- [common]
- bind_addr=0.0.0.0
- bind_port = 7000
- vhost_http_port = 8080
- token=12310086
- dashboard_port = 7500
- dashboard_user = admin
- dashboard_pwd = admin123
- subdomain_host= example.com
frpc.ini
- [common]
- server_addr = 103.255.61.100
- server_port = 7000
- token=12310086
- [http]
- type = http
- local_ip = 127.0.0.1
- local_port = 80
- use_encryption = false
- use_compression = true
- subdomain = frp
- [tomecat]
- type = http
- local_ip = 127.0.0.1
- local_port = 8080
- use_encryption = false
- use_compression = true
- subdomain = tomcat
本文轉(zhuǎn)載自微信公眾號「Linux就該這么學(xué)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Linux就該這么學(xué)公眾號。