最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù)

 更新時間:2018年04月07日 13:15:52   作者:奉強  
這篇文章主要介紹了詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

文檔更新說明

2018年04月06日 v1.0

內(nèi)網(wǎng)穿透相信是后端開發(fā)者經(jīng)常遇到的需求,可是怎么實現(xiàn)呢?其實有現(xiàn)成的服務(wù):花生殼、ngrok等,但是,最近花生殼宣布,免費版的內(nèi)網(wǎng)穿透將不支持80端口映射了,而免費版的ngrok也不夠穩(wěn)定,于是乎,我就開始需找新的解決方案了

本文使用了docker、nginx,要全部搞懂的話需要一定的后端基礎(chǔ)(當(dāng)然,基本上入個門就可以了),個人認(rèn)為還是有一定閱讀門檻的,但是你如果只是想把服務(wù)搭建起來,按照步驟來做是不難的

1、概述

內(nèi)網(wǎng)穿透其實就是用服務(wù)器做一個中轉(zhuǎn),將請求轉(zhuǎn)發(fā),本文記錄了在 ubuntu 16.04 上,基于 docker 搭建的內(nèi)網(wǎng)穿透服務(wù)

1.1、原理

內(nèi)網(wǎng)穿透的原理如下圖所示:

  1. 用戶訪問我們的服務(wù)器,這個服務(wù)器是有公網(wǎng)IP的,所以用戶可以無壓力訪問
  2. 服務(wù)器與本地電腦保持長鏈接,當(dāng)有請求的時候,服務(wù)器將請求轉(zhuǎn)發(fā)到我們的本地電腦
  3. 本地電腦將響應(yīng)回復(fù)給服務(wù)器
  4. 服務(wù)器將響應(yīng)回復(fù)給用戶

1.2、實現(xiàn)

要搭建內(nèi)網(wǎng)穿透,我們得完成兩個任務(wù)

在公網(wǎng)能訪問的服務(wù)器上運行我們的內(nèi)網(wǎng)穿透服務(wù); 在本地電腦上面運行內(nèi)網(wǎng)穿透客戶端。

當(dāng)然,你可以自己根據(jù)原理實現(xiàn)一套,不過我們有現(xiàn)成的三方開源工具,可以幫我們實現(xiàn)這一套功能。這個就是我們今天的主角 lanproxy

2、實現(xiàn)步驟

現(xiàn)成的工具已經(jīng)找到,接下來就是簡單的搭建一下了,搭建過程分為服務(wù)端和本地電腦端

2.1、服務(wù)端流程:

  1.  在服務(wù)器上安裝 dockernginx
  2. 在服務(wù)器上通過 docker 運行 lanproxy server
  3. 將域名解析到我們的服務(wù)器
  4. 配置 nginx 反向代理
  5. 打開 lanproxy 后臺頁面,添加客戶端和映射信息

2.2、本地電腦流程:

  1. 運行要被映射的服務(wù)
  2. 運行本地電腦映射客戶端程序( lanproxy client )

下面開始服務(wù)端的配置:

2.1.1、在服務(wù)器上安裝 dockernginx

nginx 的安裝是很簡單的,一個命令就搞定

docker 也可以使用腳本安裝,也是一句命令的事

# 1、安裝nginx
$ sudo apt-get install nginx

# 2、安裝docker
$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 可選步驟,建docker源修改為阿里云
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
 # 下面的鏈接需要到阿里云后臺查看,每個人的加速地址是不一樣的
 "registry-mirrors": ["https://abcdefg.mirror.aliyuncs.com"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

2.1.2 在服務(wù)器上通過 docker 運行 lanproxy server

服務(wù)安裝完畢之后,就可以用docker跑服務(wù)了,可以自己寫一個 Dockerfile ,這里,我就把自己寫的放出來吧,大家可以拿去用著,gayhub 傳送門

這里我修改了 proxy-server-0.1 的部分文件,因為在 docker 中,需要保存服務(wù)前臺運行,否則容器會被 kill 掉,而官網(wǎng)默認(rèn)的啟動腳本是后臺啟動的,把 bin/startup.sh 里面的啟動命令修改成前臺啟動即可(去掉nohub和后面的1&2 &)

# 1、克隆docker配置,如果要修改配置可以編輯 conf/config.properties 文件,配置方法見lanproxy官網(wǎng)
$ git clone https://github.com/fengqiangboy/lanproxy-docker.git lanproxy-docker

# 2、build docker鏡像
$ cd lanproxy-docker
$ sudo bash build_container.sh

# 3、運行docker容器
$ bash run_container.sh

2.1.3 將域名解析到我們的服務(wù)器

需要兩個域名,一個用來訪問我們的 lanproxy 后臺,一個用來訪問我們需要內(nèi)網(wǎng)穿透的服務(wù)

例如:

lanproxy.fengqiangboy.com -> 用來訪問lanproxy后端

test.fengqiangboy.com -> 用來訪問內(nèi)網(wǎng)穿透服務(wù)

2.1.4配置 nginx 反向代理

將兩個域名解析到我們的服務(wù)器之后,再通過反向代理,將其反代到我們的lanproxy端口

下面配置的最終效果就是:

  1. 我們可以通過 lanproxy.fengqiangboy.com 訪問 lanproxy
  2. 我們可以通過 test.fengqiangboy.com 訪問本地電腦映射的服務(wù)

lanproxy.fengqiangboy.com.conf:

server {
  listen 80;
  # 這里使用自己的域名
  server_name lanproxy.fengqiangboy.com;
  charset utf-8;
  location / {
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  Host   $http_host;
    # 這里根據(jù)你的lanproxy配置,改成 config.server.port的值
    proxy_pass    http://127.0.0.1:8090;
    client_max_body_size 35m;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

test.fengqiangboy.com.conf:

server {
  listen 80;
  # 這里使用自己的域名
  server_name test.fengqiangboy.com;
  charset utf-8;
  location / {
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  Host   $http_host;
    # 這里根據(jù)你的lanproxy配置,改成 外網(wǎng)接口 的值,在lanproxy后臺網(wǎng)頁上配置,后面配置
    proxy_pass    http://127.0.0.1:50000;
    client_max_body_size 35m;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

2.1.5 打開 lanproxy 后臺頁面,添加客戶端和映射信息

  1. 打開 http://lanproxy.fengqiangboy.com
  2. 用前面 conf/config.properties 文件中配置的賬號和密碼登錄后臺
  3. 添加一個客戶端,記住客戶端密鑰
  4. 添加完客戶端之后添加一個配置,配置如下圖

到此,服務(wù)端的配置就完成了。下面開始本地電腦的配置。

2.2.1 運行要被映射的服務(wù)

既然要把內(nèi)網(wǎng)的服務(wù)映射出去,那首先就要把本地電腦的服務(wù)跑起來吧,不然拿什么來映射?這里就很多操作方法了,各個語言都不一樣,把自己的服務(wù)跑起來就行

2.2.2 運行本地電腦映射客戶端程序( lanproxy client )

這里有兩個方法,一個方法是使用官網(wǎng)提供的 go 版本,不需要安裝 java 環(huán)境在本地電腦上,另外一種是使用官網(wǎng)提供的 java 版本,這里我使用 java 版本的。

克隆 lanproxy 代碼到本地電腦

$ git clone https://github.com/ffay/lanproxy.git lanproxy

打包 lanproxy

打包之前需要確保你安裝了 maven

$ cd lanproxy
$ mvn package

修改配置文件信息

打包完成之后,客戶端文件會出現(xiàn)在 distribution/proxy-client-0.1 目錄下,打開之后有是個文件夾: bin 、 conf 、 liblog ,配置信息在 conf/config.properties 文件內(nèi),根據(jù)前面服務(wù)端的配置信息修改一下。

# 這里是在lanproxy后臺配置的密鑰
client.key=key

# 配置ssl信息,根據(jù)服務(wù)端的配置填寫
ssl.enable=true
ssl.jksPath=test.jks
ssl.keyStorePassword=123456

# 服務(wù)器的ip
server.host=163.162.161.160

#根據(jù)服務(wù)端配置,開啟ssl的話填寫ssl的端口,否則填寫普通端口
server.port=4993

啟動客戶端

客戶端信息配置完成之后就可以啟動客戶端了

# mac/linux使用這個
$ bash bin/startup.sh

# Windows 直接運行 bin/startup.bat

訪問測試

按照前面的配置,這時候我們應(yīng)該是可以通過 test.fengqiangboy.com 來訪問我們的內(nèi)網(wǎng)服務(wù)了的,用瀏覽器打開看看

3、一點補充

為什么要使用docker?

使用docker主要是為了不破壞服務(wù)端環(huán)境,只是給 lanproxy 安裝了一個 jdk8 的環(huán)境,不影響其他服務(wù)繼續(xù)運行;而且使用 docker 還可以很方便的轉(zhuǎn)移到其它機器上面部署,只要把 Dockerfile 拷貝過去就可以了。

這樣搭建,服務(wù)器重啟的話需要手動重啟 lanproxy 嗎?

不需要,在服務(wù)端啟動 docker 容器的腳本下,我添加了 --restart unless-stopped 參數(shù),只要 docker 服務(wù)啟動了,容器就會跟著啟動,如果你不需要這個需求,可以去掉這個參數(shù)

為什么不用花生殼?

前不久看到花生殼的公告,說從4月1日開始,免費版將不提供80端口映射,實際上我用這個映射最大的需求就是做微信調(diào)試,去掉80端口就不能做微信調(diào)試了,不滿足我的需求了,當(dāng)然,花生殼還是不錯的,如果能滿足你的需求,還是可以省時省力完成內(nèi)網(wǎng)穿透的

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Docker 安裝 LogStash的詳細(xì)過程

    Docker 安裝 LogStash的詳細(xì)過程

    Logstash,作為Elastic Stack家族中的核心成員之一,是一個功能強大的開源數(shù)據(jù)收集引擎,在本文中,我們將詳細(xì)介紹如何借助Docker容器技術(shù)快速安裝配置Logstash,以實現(xiàn)日志及各類事件數(shù)據(jù)的無縫集成與實時處理,感興趣的朋友一起看看吧
    2024-03-03
  • Docker發(fā)布鏡像到DockerHub與阿里云容器

    Docker發(fā)布鏡像到DockerHub與阿里云容器

    本文主要介紹了Docker發(fā)布鏡像到DockerHub與阿里云容器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Docker報錯Operation?not?permitted問題的解決方法

    Docker報錯Operation?not?permitted問題的解決方法

    剛開始接觸Docker的朋友經(jīng)常會遇到問題,下面這篇文章主要給大家介紹了關(guān)于Docker報錯Operation?not?permitted問題的解決方法,需要的朋友可以參考下
    2023-02-02
  • windows server 2016安裝docker的方法步驟

    windows server 2016安裝docker的方法步驟

    這篇文章主要介紹了windows server 2016安裝docker的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 如何使用?Dockerfile?創(chuàng)建一個簡單容器

    如何使用?Dockerfile?創(chuàng)建一個簡單容器

    這篇文章主要介紹了如何使用?Dockerfile?創(chuàng)建一個簡單容器,Dockerfile?是用于指導(dǎo)?docker?創(chuàng)建自定義?image?的一系列指令,是用于創(chuàng)建?image?的藍圖,下文更多詳細(xì)介紹需要的小伙伴可以參考一下
    2022-04-04
  • docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法

    docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法

    這篇文章主要介紹了docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法,添加goland環(huán)境變量的方法及centos下sshd和goland環(huán)境的docker文件配置方法,需要的朋友可以參考下
    2021-07-07
  • Docker跨服務(wù)器通信Overlay解決方案(上)之 Consul單實例

    Docker跨服務(wù)器通信Overlay解決方案(上)之 Consul單實例

    這篇文章主要介紹了Docker跨服務(wù)器通信Overlay解決方案(上)之 Consul單實例,本文通過場景分析實例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 詳解docker中使用systemctl啟動服務(wù)報錯的解決辦法

    詳解docker中使用systemctl啟動服務(wù)報錯的解決辦法

    這篇文章主要介紹了詳解docker中使用systemctl啟動服務(wù)報錯的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 解讀docker運行時-itd參數(shù)是什么意思

    解讀docker運行時-itd參數(shù)是什么意思

    在Docker中,-itd參數(shù)組合用于在后臺運行一個交互式容器,同時保持標(biāo)準(zhǔn)輸入和分配偽終端,這種方式適合需要在后臺運行容器并保持交互能力的場景
    2025-03-03
  • docker entrypoint入口文件詳解

    docker entrypoint入口文件詳解

    這篇文章主要介紹了docker entrypoint入口文件詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論

山阴县| 车致| 辉南县| 绥阳县| 长子县| 本溪市| 正蓝旗| 镇安县| 江阴市| 肥西县| 巴里| 汶上县| 天长市| 桐梓县| 福鼎市| 连城县| 双江| 新郑市| 海晏县| 临安市| 太仆寺旗| 西和县| 会同县| 长丰县| 灌阳县| 鱼台县| 丘北县| 秦皇岛市| 龙山县| 纳雍县| 宁波市| 宜春市| 清丰县| 衡水市| 锡林郭勒盟| 小金县| 台山市| 伽师县| 平阳县| 永州市| 沙湾县|