当在内网服务器部署了一些服务时,我们在内网下可以很方便访问,但是当我们在外网的时候,就没法直接的访问内网的服务了,这时候可以通过内网穿透来实现访问内网服务,本篇文章记录下通过公网云服务器实现反向代理的方法
1、准备
- 内网服务器一台
- 外网的云服务器一台(安装配置Nginx)
2、服务器配置ssh
在两台服务器都配置ssh,然后为了实现免密访问,可以使用ssh-keygen -t rsa
命令产生密钥对,然后将~/.ssh/
下的id_rsa.pub
中的内容,拷贝到另一台服务器同样路径下的authorized_keys
文件中(如果不存在就创建一个)
在内网服务器安装autossh
1 | sudo apt-get install autossh |
3、内网服务器配置反向代理
命令格式
1 | ssh -fCNL |
内网服务器反向代理ssh(22)和其他服务(9000)
将内网服务器9000端口访问的服务反向代理到外网云服务器的9001端口
1 | ssh -fCNR 9001:localhost:9000 root@114.115.156.32 |
使用autossh,可以自动重新连接
1 | autossh -M 1314 -fCNR 9001:localhost:9000 root@114.115.156.32 |
4、外网云服务器使用nginx进行端口转发
如果云服务器中安装配置好Nginx后,在配置文件中修改,添加端口本地端口转发代理如下:
1 | server { |
注意这里非80端口转发,需要在proxy_set_header Host
中设置和listen端口保持一致
注意云服务器需要去安全组管理中开放相对应的转发端口9000