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

相關資料

下載

下載地址:https://github.com/fatedier/f...
選擇對應的版本進行下載php

wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_386.tar.gz

若是是windows須要下載windos版本html

wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_darwin_amd64.tar.gz

下載後、個人服務端是centos 客戶端是windowslinux

服務端須要關注的文件是 frps、frps.ini
客戶端須要關注的文件是 frpc(或者是frpc.exe)、frpc.ini

注意,若是運行的環境是windows就要運行windows版本的,也就是exe後綴的nginx

配置服務端

配置文件

# 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能推出git

./frps -c ./frps.ini

後臺啓動github

nohup ./frps -c ./frps.ini &

若是有興趣,更能夠設置成開機啓動(這裏不講述)web

配置客戶端

配置文件

# 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
    域名 這裏重點說一下,這個參數能夠填的域名有shell

    abc.baidu.com
    *.abc.baidu.com

    可是,這些域名都是須要解析到服務器ip的
    *.abc.baidu.com 這裏就須要使用到域名泛解析
    具體百度便可windows

客戶端啓動

./frpc -c ./frpc.ini

windowscentos

./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 端口是什麼,
  • 讓服務器其餘網站的端口能夠不用改;

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

相關文章
相關標籤/搜索