frp 和 nginx 搭建一個內網穿透服務器

相關資料

下載

下載地址: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

至此內網穿透完成

原文地址:http://www.taoluyuan.com/index.php/archives/42/

但是

  • 但是剛剛有沒有發現,訪問的是帶端口的網址,b.abc.baidu.com:8081
  • 如果不想帶端口呢,瀏覽器的默認端口是80,也就是說,我把服務端vhost_http_port,配置成80就好了,當然這樣能解決
  • 但是如果服務器有其他程序佔用80端口呢,比如nginx,總不能把nginx換成其他端口吧,那我的博客www.blog.com就因爲這個得改成www.blog.com:9090 假設改成9090,所以肯定有辦法公用的
  • 辦法就是,我們可以利用nginx的反向代理就能完成,請接下來往下看 配置nginx

配置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 端口是什麼,
  • 讓服務器其他網站的端口可以不用改;

原文地址:http://www.taoluyuan.com/index.php/archives/42/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章