frp + Nginx實現內網穿透 配置多個子域名訪問內部服務
緣起
公司搬家,新家不能裝專線,靜態ip消失,改爲動態IP了,這樣內部服務器在外網就沒法訪問了,所幸我們有一臺雲服務器,有公網ip。這裏只提示寫這篇博客的原因,下面的操作是在我個人騰訊雲服務器(帶公網ip)和個人PC上測試使用,親測通過。公司阿里雲服務器是生產環境,拿來測試會影響線上。
環境準備
- 已備案的域名一個
- 帶公網ip的雲服務器
- pc一個
- frp0.30.0 frp github下載地址
- nginx1.10.3
雲服務器安裝nginx和frp
- 安裝 frp
這裏簡單說一下frp,frp是用go語言開發的內網穿透工具,分爲frpc,frps。frpc是客戶端,安裝在內網,frps是服務端,安裝在具有公網ip的服務器上,frpc和frps協商一個通訊端口,frpc啓動的時候會通過這個通訊端口去連接frps,實現內網穿透(並沒有去看源碼,只是大致猜測是這樣)。frps可以配置vhost_http_port來實現虛擬主機服務,瀏覽器請求[公網ip]:[vhost_http_port]
,frps會把這個請求轉發給frpc,frpc接收到後再轉發給服務提供者,可以實現內網服務訪問,具體請看:frp中文文檔
從github上下載frp,放在/home下,打開frps.ini添加如下配置:
[common]
# frp連接的端口
bind_port = 7000
# http監聽端口
vhost_http_port = 8080
# https監聽端口
vhost_https_port = 8443
# frp客戶端連接服務端時的token 爲了安全 建議添加
token = tPaALZKtCBfN6IAp
# 二級域名 後面訪問的格式是a.frp.xxx.net或b.frp.xxx.net
subdomain_host = frp.xxx.net
使用命令啓動:
./frps -c ./frps.ini
ps:如果雲服務器有防火牆或者雲安全組策略(阿里雲有,在控制檯),需要開放你上面用到的端口。
域名解析
解析兩條A記錄:frp.xxx.net
和 *.frp.xxx.net
,都指向你的雲服務器ip,稍等一會,ping frp.xxx.net
,如果能ping
通說明解析成功
配置frpc
- 下載frp到本地,解壓
- 進入解壓完成的目錄,修改frpc.ini爲下:
[common]
# 公網ip 就是frps所在的服務器的ip
server_addr = xxx.xxx.xxx.xxx
# frps規定的連接端口
server_port = 7000
# 連接token 與frps中的token
token = tPaALZKtCBfN6isP
# 定義第一個轉發
[web01]
type = http
# 本地(內網)服務的端口
local_port = 8001
# 與frps中的subdomain_host連接起來就是a.frp.xxx.net
subdomain = a
# 定義第二個轉發
[web02]
type = http
# 本地(內網)服務的端口
local_port = 8002
# 與frps中的subdomain_host連接起來就是b.frp.xxx.net
subdomain = b
然後啓動:
./frpc -c ./frpc.ini
如果沒有報錯就是啓動成功。
至此,訪問地址a.frp.xxx.net:8080
會被轉發到本地(內網)的8001端口,而訪問地址b.frp.xxx.net:8080
會被轉發到本地(內網)的8002端口
配置nginx
我們不想要url a.frp.xxx.net:8080
這類似地址中的端口怎麼辦?那隻能使用默認端口80了,這裏可以用nginx進行轉發,首先在雲服務器安裝nginx,這個不再贅述,網上有的是資料,然後配置nginx的conf文件,名字爲nginx.conf,在nginx文件夾或者/etc/nginx裏面,至於在哪,取決於你用的什麼安裝方式,此文件中添加一個server節點,配置如下:
server {
# 監聽的80端口
listen 80;
# 域名配置 記得一定要加上*.frp.xxx.net這個,只加frp.xxx.net是不行的,某運維大坑張XX在這坑我2天的時間
server_name * .frp.xxx.net frp.xxx.net;
location / {
proxy_pass http: //127.0.0.1:8080;
# 這個Host的header一定要加,不然轉發後frp拿不到通過哪個域名訪問的,導致轉發失敗
proxy_set_header Host $host;
}
}
然後重啓nginx,大功告成。
參考鏈接
- https://blog.csdn.net/MENGHUANBEIKE/article/details/100792343?utm_source=app
- https://www.jianshu.com/p/00c79df1aaf0