Nginx+SSH实现内网穿透

介绍

首先需要确保本地及外网服务器的ssh连接可用,主要实现思路是外网服务器nginx将指定请求代理到B端口(B端口为希望代理到本地而对外暴露的端口,需要开放入站权限,配置服务器防火墙或云服务器安全组),本地使用ssh反向隧道代理本地A端口到服务器B端口,实现外网访问服务器指定请求将代理到访问本地服务。

实现

nginx代理配置,同普通代理,访问指定域名的/proxy/即可进入代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## server块内
location /proxy/
{
proxy_pass http://127.0.0.1:8080/; ## 此处代理到8080端口
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
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;
}

本地ssh建立反向隧道

1
2
3
4
5
6
7
8
9
## 普通ssh登录加上-CNR参数,8080为服务器暴露端口,9130为本地服务端口
ssh -CNR 8080:localhost:9130 root@1.1.1.1

## -f 后台执行ssh指令
## -C 允许压缩数据
## -N 不执行远程指令
## -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
## -L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
## -p 指定远程主机的端口

Nginx+SSH实现内网穿透
https://www.goozoe.com/posts/44936.html
作者
一起吃西瓜
发布于
2021年7月16日
许可协议