使用lanproxy進行內網穿透

內網穿透

《微信本地調試》一文中,小編提到了使用ngrok、natapp和花生殼進行內網穿透。但是,想要使用自定義域名,都是要收費的。

本文中,我們要搭建一個免費的內網穿透服務器。內網穿透服務器,可選的軟件有l(wèi)anproxy、frp、n2n等等,今天我們選擇的是lanproxy。

原文地址:http://www.voidking.com/dev-lanproxy/

準備

1、一臺公網服務器(運行proxy-server)。
2、一臺內網pc或服務器(運行proxy-client)。

服務端配置

安裝java

1、刪除自帶jdk

rpm -e --nodeps `rpm -qa | grep java`

2、查看yum庫中有哪些jdk版本。
yum search java | grep jdk

3、選擇java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment版本進行安裝。
yum install java-1.8.0-openjdk-devel.x86_64

默認安裝目錄為/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64

4、配置環(huán)境變量
vim /etc/profile

在最后添加:

#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

5、讓修改立即生效
source /etc/profile

6、查看安裝結果
javajavacjava -version

安裝lanproxy

1、訪問lanproxy下載地址,下載proxy-server-0.1.zip,上傳到公網服務器。

或者,直接在服務器上下載
wget https://github.com/ffay/lanproxy/files/1274739/proxy-server-0.1.zip

curl -C - -O -L https://github.com/ffay/lanproxy/files/1274739/proxy-server-0.1.zip

2、解壓安裝
unzip proxy-server-0.1.zip

mv proxy-server-0.1 /usr/local/

3、修改配置文件
vim /usr/local/proxy-server-0.1/conf/config.properties
修改管理員的用戶名和密碼。

4、啟動服務
cd /usr/local/proxy-server-0.1/bin

chmod +x startup.sh

./startup.sh

5、訪問 http://host_ip:8090 ,即可看到登錄界面。

nginx反向代理

1、添加域名解析local到公網ip。

2、在nginx虛擬主機配置目錄中,添加local.voidking.com.conf,內容如下:

server {
    listen 80;
    server_name local.voidking.com;
    charset utf-8;
    location /{
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size       1024m;
        client_body_buffer_size    128k;
        client_body_temp_path      data/client_body_temp;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
        proxy_temp_path            data/proxy_temp;
        
        proxy_pass http://127.0.0.1:8090;
    }
}

3、測試nginx
./nginx -t,也許會提示缺少目錄,那么新建目錄。
mkdir -p /usr/local/nginx/data/client_body_temp

mkdir -p /usr/local/nginx/data/proxy_temp

4、重啟nginx
./nginx -s reload

5、訪問 http://local.voidking.com/ ,即可看到登錄界面。

使用

服務端配置

1、登錄lanproxy,添加客戶端,輸入客戶端備注名稱,生成隨機密鑰,提交添加。


2、客戶端列表中,配置管理中,都會出現(xiàn)新添加的客戶端。


3、單擊配置管理中的客戶端,添加配置(每個客戶端可以添加多個配置)。


  • 代理名稱,推薦輸入客戶端要代理出去的端口,或者是客戶端想要發(fā)布到公網的項目名稱。
  • 公網端口,填入一個服務器空閑端口,用來轉發(fā)請求給客戶端。
  • 代理IP端口,填入客戶端端口,公網會轉發(fā)請求給該客戶端端口。

客戶端配置

1、訪問lanproxy下載地址,下載proxy-client-0.1.zip,解壓到喜歡的目錄。

2、進入proxy-client-0.1/conf目錄,修改config.properties為:

#與在proxy-server配置后臺創(chuàng)建客戶端時填寫的秘鑰保持一致;沒有服務器可以登錄 https://lanproxy.org/ 創(chuàng)建客戶端獲取秘鑰
client.key=7533f855416741d88732954991668715
ssl.enable=true
ssl.jksPath=test.jks
ssl.keyStorePassword=123456

#這里填寫實際的proxy-server地址;沒有服務器默認即可,自己有服務器的更換為自己的proxy-server(IP)地址
server.host=local.voidking.com

#proxy-server ssl默認端口4993,默認普通端口4900
#ssl.enable=true時這里填寫ssl端口,ssl.enable=false時這里填寫普通端口
server.port=4993

3、進入proxy-client-0.1/bin目錄,雙擊startup.bat,即可啟動lanproxy客戶端。

如果啟動失敗,一般是因為jdk沒有安裝配置成功,參考《IDEA的常用配置》中的安裝jdk,安裝配置jdk后再次啟動即可。

4、訪問地址 http://local.voidking.com:50000/ ,即可看到本地訪問客戶端80端口相同的頁面。


至此,代理成功!

進階配置

一個端口一個項目

假設,我們本地的4000端口開啟了node服務。那么,怎么把這個服務優(yōu)雅地提供給整個互聯(lián)網?

1、服務端添加配置


2、啟動本地node服務


3、已經啟動lanproxy客戶端,訪問 http://local.voidking.com:50001/

此時,整個互聯(lián)網都能訪問到這個node項目,但是,帶著端口號很不友好。那么,我們就給這個項目添加一個單獨的域名。

1、添加域名解析node.local到公網ip。

2、在nginx虛擬主機配置目錄中,添加node.local.voidking.com.conf,內容如下:

server {
    listen 80;
    server_name node.local.voidking.com;
    charset utf-8;
    location /{
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size       1024m;
        client_body_buffer_size    128k;
        client_body_temp_path      data/client_body_temp;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
        proxy_temp_path            data/proxy_temp;
        
        proxy_pass http://127.0.0.1:50001;
    }
}

3、重啟nginx
./nginx -s reload

4、訪問地址 http://node.local.voidking.com/ ,即可看到本地node服務。

一個端口多個項目

1、通過我們開放出的80端口,可以訪問web根目錄下的很多項目,比如在其他文章中提到過的basic項目和vkphp項目,下文以vkphp項目為例。

2、當前,vkphp項目首頁是簡單的文字顯示。


3、通過外網訪問的地址為 http://local.voidking.com:50000/vkphp

此時,整個互聯(lián)網都能訪問到這個vkphp項目,但是,帶著端口號和項目名,感覺像是個欺詐網站。那么,我們能否給這個項目添加一個單獨的域名呢?當然也是可以的。

1、添加域名解析vkphp.local到公網ip。

2、在nginx虛擬主機配置目錄中,添加vkphp.local.voidking.com.conf,內容如下:

server {
    listen 80;
    server_name vkphp.local.voidking.com;
    charset utf-8;
    location /{
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size       1024m;
        client_body_buffer_size    128k;
        client_body_temp_path      data/client_body_temp;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
        proxy_temp_path            data/proxy_temp;
        
        proxy_pass http://127.0.0.1:50000;
    }
}

3、重啟nginx
./nginx -s reload

4、打開本地apache的http-vhosts.conf,添加配置:

<VirtualHost *:80> #laragon magic!
    DocumentRoot "C:/laragon/www/vkphp/"
    ServerName vkphp.local.voidking.com
    ServerAlias vkphp.local.voidking.com
</VirtualHost>

5、重啟本地apache

6、訪問地址 http://vkphp.local.voidking.com/ ,即可看到本地vkphp項目。

有趣的是,訪問時該地址會自動在后面加上vkphp,成為 http://vkphp.local.voidking.com/vkphp/

結語

由上配置我們發(fā)現(xiàn),nginx的反向代理非常好用。稍微調整,便可以適應大多數(shù)項目,實在是美化url的神器,哇咔咔。

書簽

lanproxy源碼地址

業(yè)余草推薦一款局域網(內網)穿透工具lanproxy

frp源碼地址

frp中文文檔

使用frp實現(xiàn)內網穿透

n2n源碼地址

n2n內網穿透神器(一條命令實現(xiàn)穿透)

n2n內網穿透神器

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 32,803評論 24 1,002
  • Page 1:nginx 服務器安裝及配置文件詳解 CentOS 6.2 x86_64 安裝 nginx 1.1 ...
    xiaojianxu閱讀 8,583評論 1 41
  • 嚴肅是一件好事情,它可以讓人更好的完成工作,但是嚴肅的場合不對,就會造成很多的尷尬。 相信很多人在和朋友聚會喝酒的...
    瞎驢閱讀 449評論 0 0
  • Version: V20170922 變更記錄 Redis結構 系統(tǒng)配置值說明 接口 利潤計算
    9995857閱讀 284評論 0 1