通过ssh反向隧道及nginx反向代理实现外网控制内网nodemcu芯片

基本思路:通过ssh反向隧道实现外网服务器端口到内网中继服务器端口的转发,通过配置内网中级服务器nginx反向代理,将外网发过来的请求转发到目标服务器上。最后实现通过访问外网ip转到访问内网的目标服务器。


(一)ssh反向隧道将外网服务器端口转发到内网中继服务器指定端口

(1)首先需要指定外网中继服务器 sshd 的 GatewayPorts(转发外部主机的端口)
打开中继服务器的 /etc/ssh/sshd_conf 并添加下面的行:

GatewayPorts clientspecified

重启 sshd:

sudo /etc/init.d/ssh restart

(2)在内网中继服务器中设置到外网的ssh反向隧道(假如外网ip为:1.1.1.1)

ssh -fN -R 1.1.1.1:1999:localhost:80 user@1.1.1.1
其中1999是外网服务器中指定的监听端口,80为需要转发到内网中继服务器的端口(此处80为nginx默认端口)


(二)配置内网中级服务器nginx反向代理

在内网中继服务器上修改nginx配置文件 /etc/nginx/nginx.conf

server {
    listen 80;
    server_name $host;
    location / {
         proxy_pass http://192.168.8.101:2016;
         proxy_set_header Host $host;
         proxy_redirect off;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_connect_timeout 60;
         proxy_read_timeout 600;
         proxy_send_timeout 600;
    }
}

将所有访问内网中继服务器的请求转发到内网目标服务器,192.168.101的2016端口(nodemcu芯片上开启的http服务)

(三)通过浏览器中访问外网ip实现请求内网目标服务器(nodemcu芯片)

http://1.1.1.1:1999/


就这么多吧!

你可能感兴趣的:(通过ssh反向隧道及nginx反向代理实现外网控制内网nodemcu芯片)