nginx和ngrok配合进行内网web转发

程序&源码 CN-P5 2652℃ 0评论

今天遇到一个网友的问题:

1.电脑A处于内网无外网,提供web服务(192.168.1.150),无权限。

2.电脑B处于内网可连接外网,有权限。

3.电脑C处于外网有公网固定IP。

需要在外网访问电脑A的web服务(后来实际情况为A提供两个不同的web服务)。

当时我的第一个想法是ngrok映射。后来看A没有权限又考虑在B上用nginx做反向代理把B的80端口反向到192.168.1.150,然后再用ngrok映射B的80端口到外网。

只是一个想法,苦于没做过估计跟网友介绍的也不详细,于是开始了自己的试验之路

模拟问题的环境:

电脑A:192.168.1.150 提供内网HFS的文件服务(基于web下载扫描文件的服务)

电脑B:树莓派处于内网,然后安装nginx、编译ngrok。

电脑C:处于公网,运行ngrok服务端。

简单的介绍下各个配置:

电脑A无权限不做配置,保证web服务正常访问。

电脑C的ngrok服务端

运行命令:

ngrokd -domain="n.des8.com" -httpAddr=":8080" -httpsAddr=":8081"

其中8080和8081分别为对外转发用的端口,如果你的服务器没有使用80端口可以用80端口提供服务,我的例子里因为电脑C运行着其他服务就改用8080端口了。


正常会出现上图的文字。

电脑B的nginx:(/etc/nginx/sites-available/default)

server {
    listen 80;
    listen [::]:80;
   location / {
       proxy_pass http://192.168.1.150;
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

电脑B的ngrok

/home/pi/ngrok/ngrok.cfg

server_addr: "电脑C绑定的域名(我的实例:n.des8.com):4443"
trust_host_root_certs: false

运行命令:

pi@raspberrypi:~/ngrok $ ./ngrok -subdomain hfs -config=ngrok.cfg 80

其中hfs为子域名 80为本地需要转发的端口,4443为ngrok默认提供服务的端口。


出现类似上面的 online 就为成功映射。

现在外网访问nfs.n.des8.com:8080即可打开内网的nfs服务。

扩展一下:如果内网有多个web服务,可以配置电脑B的nginx按照域名配置多个server。同时后台对应域名开启多个ngrok客户端即可。(据说ngrok可以转发到本地局域网的其他机器我试验未成功)

转载请注明:黑白的自留地 » nginx和ngrok配合进行内网web转发

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址