介绍
首先需要确保本地及外网服务器的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
| location /proxy/ { proxy_pass http://127.0.0.1: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 指定远程主机的端口
|