相關資料
下載
下載地址:https://github.com/fatedier/f…
選擇對應的版本進行下載
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_386.tar.gz
如果是windows需要下載windos版本
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_darwin_amd64.tar.gz
下載後、我的服務端是centos 客戶端是windows
服務端需要關注的檔案是 frps、frps.ini
客戶端需要關注的檔案是 frpc(或者是frpc.exe)、frpc.ini
注意,如果執行的環境是windows就要執行windows版本的,也就是exe字尾的
配置服務端
配置檔案
# frps.ini
[common]
#服務端需要開啟的埠(與客戶端繫結的進行通訊的埠)
bind_port = 7000
#服務端需要開啟的埠(訪問客戶端web服務自定義的埠號)
vhost_http_port = 8081
auth_token = websong
type = http
custom_domains = abc.baidu.com
auth_token = websong
配置檔案說明
- bind_port
服務端需要開啟的埠 - vhost_http_port
服務端需要開啟的埠 - auth_token
需要客戶端的auth_token與此一樣 - type
其實除了http還有其他引數,比如tcp,這裡只講述http,其他的請看相關文件: https://github.com/fatedier/frp - custom_domains
域名
具體接下來在配置客戶端說明
啟動服務
正常啟動,ctrl+c能推出
./frps -c ./frps.ini
後臺啟動
nohup ./frps -c ./frps.ini &
如果有興趣,更可以設定成開機啟動(這裡不講述)
配置客戶端
配置檔案
# frpc.ini
[common]
server_addr = 48.104.176.184
server_port = 7000
auth_token = websong
[web6]
type = http
local_port = 80
custom_domains =b.abc.baidu.com
配置檔案講解
- server_addr
對應伺服器ip , - server_port
與服務端配置bind_port一樣 - auth_token
與服務端配置auth_token一樣 - [web6]
這個是唯一的,假如在另外一個客戶端用了web6將會報明顯的錯誤 - local_port
此埠,假如是80,那就是訪問客戶端機器的80埠 -
custom_domains
域名 這裡重點說一下,這個引數可以填的域名有abc.baidu.com *.abc.baidu.com
但是,這些域名都是需要解析到伺服器ip的
*.abc.baidu.com 這裡就需要使用到域名泛解析
具體百度即可
客戶端啟動
./frpc -c ./frpc.ini
windows
./frpc.exe -c ./frpc.ini
後臺啟動前面加 nohup 跟服務端一樣
nohup ./frpc.exe -c ./frpc.ini
穿透成功
啟動網站
如果以上服務端啟動,客戶端啟動都沒問題的話
以客戶端的配置的域名:custom_domains
和 服務端配置的埠vhost_http_port在瀏覽器開啟即可
也就是 b.abc.baidu.com:8081
其實這些就相當於訪問你客戶端本機的
127.0.0.1:80 或者localhost:80,
這個80埠是客戶端配置檔案的的local_port至此內網穿透完成
但是
- 但是剛剛有沒有發現,訪問的是帶埠的網址,b.abc.baidu.com:8081
- 如果不想帶埠呢,瀏覽器的預設埠是80,也就是說,我把服務端vhost_http_port,配置成80就好了,當然這樣能解決
- 但是如果伺服器有其他程式佔用80埠呢,比如nginx,總不能把nginx換成其他埠吧,那我的部落格www.blog.com就因為這個得改成www.blog.com:9090 假設改成9090,所以肯定有辦法公用的
- 辦法就是,我們可以利用nginx的反向代理就能完成,請接下來往下看 配置nginx
原文地址:http://www.taoluyuan.com/index.php/archives/42/
配置nginx
配置檔案
server{
listen 80;
server_name *.abc.baidu.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/abc/;
location /
{
proxy_pass http://48.104.176.184:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
}
說明
如配置檔案所屬
- 本來是需要訪問 http://b.abc.baidu.com:8081 的
- nginx使用了泛域名配置,*.abc.baidu.com (你自己的域名肯定不一樣)
server_name *.abc.baidu.com;
- 反向代理配置
proxy_pass http://48.104.176.184:8081;
ip是服務端的ip,埠是服務端配置vhost_http_port 8081
至於nginx的其他引數,跟平常大多數nginx配置網站引數一樣
這裡使用到了nginx泛域名解析,和反向代理
完成開啟網站
如果客戶端配置的custom_domains是b.abc.baidu.com
在瀏覽器輸入 b.abc.baidu.com ,就不用帶埠號8081 ,應為已經被nginx反向代理了;
這樣做的好處是
- 使用的時候直接在瀏覽器輸入域名就可以,不用輸入埠,使用者也不用知道服務端的vhost_http_port 埠是什麼,
- 讓伺服器其他網站的埠可以不用改;