雖然現(xiàn)在的內(nèi)網(wǎng)穿透工具倚聚,如:花生殼和ngrok,都做的不錯凿可,而且還免費惑折,但是了,每次啟動域名都不一樣枯跑,訪問速度慢惨驶,有些時候我們必須用ip訪問,用時候要用到tcp轉(zhuǎn)發(fā)敛助,所以了粗卜,我們有必要自己搭建內(nèi)網(wǎng)穿透的環(huán)境。
環(huán)境準備
- 一臺公網(wǎng)ip的服務(wù)纳击,需要安裝nginx
- 一臺局域網(wǎng)服務(wù)器续扔,需要支持ssh,要進一步轉(zhuǎn)發(fā)到其他物理機的話评疗,需要nginx或者做端口轉(zhuǎn)發(fā)
公網(wǎng)服務(wù)器
- 開放7689端口测砂,做tunnel通道,給nginx開放80端口
- nginx版本要在1.9以上百匆,因為要用到stream模塊砌些,做tcp轉(zhuǎn)發(fā)的
./configure --with-stream
tcp轉(zhuǎn)發(fā)配置
stream {
upstream backend {
server 127.0.0.1:7689;
}
server {
listen 80;
proxy_connect_timeout 8s;
proxy_timeout 24h;
proxy_pass backend;
}
}
http轉(zhuǎn)發(fā)配置
http {
upstream tunnel {
server 127.0.0.1:7689;
}
server {
listen 80;
server_name wechat.akpay.top;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://tunnel;
}
}
}
局域網(wǎng)機器
局域網(wǎng)機器可以說linux,window,mac存璃,這里以mac為例
- 局域網(wǎng)用ssh命令連接公網(wǎng)服務(wù)器
ssh -o ServerAliveInterval=30 -vnNT -R 7689:localhost:8080 root@公網(wǎng)服務(wù)器ip -p 50004
- ServerAliveInterval為心跳包時間仑荐,用本地的8080端口連接公網(wǎng)服務(wù)器的7689端口,-p 是設(shè)置跳板機的端口纵东,沒有可以不設(shè)置
- ip或者域名 => 公網(wǎng)服務(wù)器的80端口 => 公網(wǎng)7689 => 局域網(wǎng)8080
進一步擴展
有時候粘招,要測試的機器可能是手機或者其它物理機,需要做進一步轉(zhuǎn)發(fā)偎球,這里可以用nginx洒扎,如果局域網(wǎng)為linux或者mac,
可以利用其自帶的跳板機功能衰絮,請參考這篇文章mac設(shè)置端口轉(zhuǎn)發(fā)