FRP內(nèi)網(wǎng)穿透(域名綁定+Nginx代理+HTTPS支持+SSH登錄)

一离咐、介紹

內(nèi)網(wǎng)穿透,網(wǎng)上有多種方案奉件,有些是付費(fèi)的宵蛀,有些是開源的昆著,其實(shí)各有優(yōu)劣,付費(fèi)的不需要自己擁有服務(wù)器糖埋,而開源的比如FRP則需要有一臺(tái)公網(wǎng)的服務(wù)器宣吱,如果你擁有一臺(tái)公網(wǎng)服務(wù)器(服務(wù)器可能不是你買的窃这,但是你有使用權(quán)限或者說該服務(wù)器性能要差點(diǎn))瞳别,但是部署的軟件如網(wǎng)站、gitlab等想放在自己的物理電腦上杭攻,那使用FRP進(jìn)行內(nèi)網(wǎng)穿透將是比較好的選擇祟敛,有比較強(qiáng)的靈活性

主要能實(shí)現(xiàn)的功能:
1:外網(wǎng)通過域名訪問自己電腦上任意端口程序;
2:外網(wǎng)ssh登錄自己電腦兆解;
3:總之云服務(wù)器能有的功能馆铁,大部分都可以部署到自己電腦上;

網(wǎng)上也有較多FRP內(nèi)網(wǎng)穿透的文章锅睛,但是看的有點(diǎn)亂埠巨,我將結(jié)合實(shí)際穿透過程將每一步記錄下來,大家按照步驟來是可以成功完成穿透的(可能看著步驟有點(diǎn)多现拒,但是一步步完成實(shí)際還是簡(jiǎn)單的)辣垒,總的來說只需要改三個(gè)文件(配置文件放在文末):
1:服務(wù)端的frps.ini文件
2:服務(wù)端的nginx.conf文件
3:客戶端的frpc.ini文件

image.png

官網(wǎng)文檔:https://gofrp.org/docs/overview/

需要的資源:

1:域名(沒有域名只能通過ip進(jìn)行訪問),這里我申請(qǐng)的域名是:www.leachchen.com
2:一臺(tái)云服務(wù)器(FRP內(nèi)網(wǎng)穿透需要依賴公網(wǎng)服務(wù)器印蔬,若沒有服務(wù)器的同學(xué)勋桶,可以在網(wǎng)上找其他內(nèi)網(wǎng)穿透方案也有比較多,不過功能全點(diǎn)的要付費(fèi))
3:一臺(tái)自己的物理電腦(我的是win10+ubuntu雙系統(tǒng)侥猬,ubuntu系統(tǒng)作為物理服務(wù)器)
4:FRP客戶端例驹,github地址 https://github.com/fatedier/frp/releases

二、目標(biāo)

我在自己物理電腦上安裝了nginx(默認(rèn)端口80)和gitlab(gitlab端口我設(shè)置成8000)
本地可以通過http://127.0.0.1訪問網(wǎng)站
本地可以通過http://127.0.0.1:8000訪問代碼服務(wù)器

希望能做到:
1:通過https://www.leachchen.com 訪問物理電腦上的網(wǎng)站
2:通過https://xxx.leachchen.com 訪問物理電腦上的代碼倉庫(xxx退唠,自己可以在域名平臺(tái)配置你想要的域名前綴)

三鹃锈、配置過程

我申請(qǐng)的域名是www.leachchen.com,假設(shè)服務(wù)器IP是100.10.10.10

第一步(云服務(wù)器FRP客戶端配置):

1:下載FRP客戶端,下載地址上面有提供瞧预,我當(dāng)時(shí)下載的最新版
2:解壓

1:tar xvf frp_0.44.0_linux_amd64.tar.gz
2:cd frp_0.44.0_linux_amd64.tar.gz
3:vim frps.ini  這里注意是frps.ini屎债,客戶端是frpc.ini

3:配置frps.ini(具體含義注意看配置里的注釋)

[common]
# frp監(jiān)聽的端口,默認(rèn)是7000松蒜,可以改成其他的
bind_port = 7000
# 授權(quán)碼自己可以隨便取扔茅,客戶端配置需要與服務(wù)端配置保持一致
token = 123123

# 對(duì)user開放的web訪問端口
vhost_http_port = 81

#通過ssh登錄時(shí)的端口
[ssh]
listen_port = 6000

# frp管理后臺(tái)端口,請(qǐng)按自己需求更改秸苗,可通過http://服務(wù)器IP:7500訪問后臺(tái)管理系統(tǒng)召娜,如:http://100.10.10.10:7500
dashboard_port = 7500
# frp管理后臺(tái)用戶名和密碼,請(qǐng)改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

4:運(yùn)行:nohup ./frps -c ./frps.ini &
5:此時(shí)服務(wù)端會(huì)運(yùn)行起以下端口:
7000惊楼,frp軟件
81玖瘸,服務(wù)端的web端口秸讹,比如通過http://100.10.10.10:81就能訪問到物理機(jī)上的nginx網(wǎng)站,不能用80端口會(huì)跟云服務(wù)端的nginx 80端口沖突
6000雅倒,用于ssh登錄的
7500璃诀,frp看板系統(tǒng),可通過http://服務(wù)器IP:7500進(jìn)行訪問

第二步(客戶端FRP客戶端配置蔑匣,在自己物理機(jī)上):

1:下載FRP客戶端劣欢,下載地址上面有提供,我當(dāng)時(shí)下載的最新版
2:解壓

1:tar xvf frp_0.44.0_linux_amd64.tar.gz
2:cd frp_0.44.0_linux_amd64.tar.gz
3:vim frpc.ini

3:配置frpc.ini(具體含義注意看配置里的注釋)

# 客戶端配置
[common]
 #這里填你自己實(shí)際的域名裁良,要是沒有域名這里填云服務(wù)器公網(wǎng)ip
server_addr = www.leachchen.com
#與frps.ini的bind_port一致
server_port = 7000
#與frps.ini的token一致
token = 123123

#配置ssh服務(wù)
[ssh]
type = tcp
local_port = 22
#與服務(wù)器ssh部分listen_port保持一致
remote_port = 6000

[web]
type = http
local_port = 80
#這里填你自己實(shí)際的域名凿将,要是沒有域名這里填云服務(wù)器公網(wǎng)ip
custom_domains = www.leachchen.com 

[gitlab]
type = http
local_port = 8000
#這里填你自己實(shí)際的域名,要是沒有域名這里填云服務(wù)器公網(wǎng)ip
custom_domains = xxx.leachchen.com

4:運(yùn)行:nohup ./frpc -c ./frpc.ini &

第三步(域名與云服務(wù)器IP綁定)

我的是阿里云的域名价脾,不同服務(wù)商綁定過程都差不多牧抵,這里主要將www、gitlab這兩個(gè)與云服務(wù)器IP進(jìn)行綁定


image.png

第四步(Nginx配置)

1:訪問www.leachchen.com時(shí)默認(rèn)是80端口侨把,此時(shí)將請(qǐng)求轉(zhuǎn)發(fā)到81端口上犀变,frp服務(wù)端和客戶端保持了連接,此時(shí)會(huì)訪問到客戶端配置了相同域名的端口上
2:訪問xxx.leachchen.com時(shí)默認(rèn)是80端口秋柄,此時(shí)將請(qǐng)求轉(zhuǎn)發(fā)到81端口上获枝,frp服務(wù)端和客戶端保持了連接,此時(shí)會(huì)訪問到客戶端配置了相同域名的端口上

若不需要支持https华匾,則將這幾行注釋掉:
listen 443 ssl;
ssl_certificate /root/temp/ssl/xxx.pem;
ssl_certificate_key /root/temp/ssl/xxx.key;

nginx配置文件路徑:/etc/nginx/nginx.conf映琳,有些是在/etc/nginx/sites-enabled/default

user root;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server {
                listen 80;
        listen 443 ssl;
                ssl_certificate /root/temp/ssl/xxx.pem; #在域名服務(wù)商申請(qǐng)的證書,不同的域名證書不一樣
                ssl_certificate_key /root/temp/ssl/xxx.key; #在域名服務(wù)商申請(qǐng)的證書蜘拉,不同的域名證書不一樣

                server_name  www.leachchen.com;  #這里填你自己實(shí)際的域名
                client_max_body_size 10M;
                location / {
                    proxy_pass http://127.0.0.1:81;    #訪問www.leachchen.com時(shí)默認(rèn)是80端口萨西,此時(shí)將請(qǐng)求轉(zhuǎn)發(fā)到81端口上,frp服務(wù)端和客戶端保持了連接旭旭,此時(shí)會(huì)訪問到客戶端配置了相同域名的端口上
                    proxy_redirect http://$host/ http://$http_host/;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Host $host;

                }

        }

    server {
                listen 80;
                listen 443 ssl;
                ssl_certificate /root/temp/ssl/yyy.pem;     #在域名服務(wù)商申請(qǐng)的證書谎脯,不同的域名證書不一樣 
                ssl_certificate_key /root/temp/ssl/yyy.key; #在域名服務(wù)商申請(qǐng)的證書,不同的域名證書不一樣

                server_name xxx.leachchen.com; #這里填你自己實(shí)際的域名
                client_max_body_size 10M;
                location / {
                    proxy_pass http://127.0.0.1:81;     #訪問xxx.leachchen.com時(shí)默認(rèn)是80端口持寄,此時(shí)將請(qǐng)求轉(zhuǎn)發(fā)到81端口上源梭,frp服務(wù)端和客戶端保持了連接,此時(shí)會(huì)訪問到客戶端配置了相同域名的端口上
                    proxy_redirect http://$host/ http://$http_host/;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Host $host;

                }

        }

}

到此就完成了物理機(jī)上的網(wǎng)站稍味,通過https域名進(jìn)行外網(wǎng)訪問

SSH登錄(通過putty登錄):

輸入物理機(jī)的賬號(hào)密碼就可以進(jìn)行登錄了


image.png

配置文件下載:https://github.com/leach-chen/FRP

個(gè)人網(wǎng)站:https://www.leachchen.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末废麻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子模庐,更是在濱河造成了極大的恐慌烛愧,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異怜姿,居然都是意外死亡慎冤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門沧卢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚁堤,“玉大人,你說我怎么就攤上這事但狭∨” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵熟空,是天一觀的道長(zhǎng)藤巢。 經(jīng)常有香客問我搞莺,道長(zhǎng)息罗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任才沧,我火速辦了婚禮迈喉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘温圆。我一直安慰自己挨摸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布岁歉。 她就那樣靜靜地躺著得运,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锅移。 梳的紋絲不亂的頭發(fā)上熔掺,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音非剃,去河邊找鬼置逻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛备绽,可吹牛的內(nèi)容都是我干的券坞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肺素,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼恨锚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起倍靡,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤猴伶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜗顽,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡布卡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雇盖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忿等。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崔挖,靈堂內(nèi)的尸體忽然破棺而出贸街,到底是詐尸還是另有隱情,我是刑警寧澤狸相,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布薛匪,位于F島的核電站,受9級(jí)特大地震影響脓鹃,放射性物質(zhì)發(fā)生泄漏逸尖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一瘸右、第九天 我趴在偏房一處隱蔽的房頂上張望娇跟。 院中可真熱鬧,春花似錦太颤、人聲如沸苞俘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吃谣。三九已至,卻和暖如春做裙,著一層夾襖步出監(jiān)牢的瞬間岗憋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工菇用, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留澜驮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓惋鸥,卻偏偏與公主長(zhǎng)得像杂穷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卦绣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容