简介
- localtunnel可以将内网服务器暴露到外网服务器(将我们本地电脑的项目暴露到互联网供用户访问)
客户端
服务器端
- 下载安装
git clone git://github.com/defunctzombie/localtunnel-server.git
cd localtunnel-server
npm install
- 启动lt server
$ node -r esm bin/server --port 5000 //让程序在前台运行,终端如果关闭的话,程序也就退出了
$ nohup node -r esm bin/server --port 5000 &//让lt 服务以守护进程的形式运行
$ lsof -i :5000 //发现已经在后台运行了
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 32689 root 12u IPv4 3254700 0t0 TCP *:commplex-main (LISTEN)
客户端使用自己的服务器
- 客户端使用(假设还是将本地的8080端口暴露到官网)
✗ lt --host http://youself_domain.com:5000 --port 8080
your url is: http://horrible-robin-16.youself_domain.com:5000
- 通过访问
http://horrible-robin-16.youself_domain.com:5000
就可以访问本地的8080端口服务了,但是我们发现二级域是一个随机字符串,没事启动的时候都会变化的,有的时候我们不希望变化,比如做微信开发的时候
- 通过指定
--subdomain
来指定固定的二级域名
✗ lt --host http://youself_domain.com:5000 --port 8080 --subdomain localtunnel
your url is: http://localtunnel.youself_domain.com:5000
- 通过访问固定域名就可以访问本地的固定的ip服务了
http://localtunnel.youself_domain.com:5000
服务器nginx反向代理
- 像微信后台填写开发者服务器地址的时候,是不能带有端口号的,但是我们上面的服务在服务器端启动的时候又不能指定成80端口号(默认是80端口号,所以我们启动的时候需要指定非80端口号),之所以不能指定非80端口号是因为我们服务器的一般都会安装nginx,而nginx启动默认应该是80端口号,所以不能冲突
- 所以我们要想我们启动的lt 服务是通过域名并且是80端口号访问的话就需要通过nginx 做反向代理,配置如下:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name youself_domain.com localtunnel.youself_domain.com;
root /usr/local/www;
error_log /usr/local/nginx/logs/error.log;
location / {
proxy_pass http://127.0.0.1:5000;
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_set_header X-Forwarded-Proto http;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_redirect off;
}
}