1. 内网服务器:建立反向代理

建立内网服务器8000端口与公网服务器8001端口之间的ssh连接

ssh -fCNR 8001:localhost:8000 -o ServerAliveInterval=60 user_gong@100.100.100.100 -p 22
# ssh -fCNR [公网IP(可省略)]:[公网端口]:[内网IP]:[内网端口] [公网用户名@公网IP] -p [公网ssh端口(默认22)]
# 或者使用autossh:
# autossh -M 8999 -CNR 8001:localhost:8000 user_gong@100.100.100.100 -p 22

解释:-o ServerAliveInterval=60表示每60秒发送一次消息,以保持连接存在。

执行ps aux | grep ssh可查看是否成功启动了该进程。

2. 公网服务器

查看是否成功建立了连接

netstat -antpul | grep 8001

可以看到成功建立了连接:127.0.0.1:8001,这代表只允许本机访问。

3. 公网服务器:配置nginx

由于上面建立的连接端口8001只允许本机访问,我们需要使用nginx将http(s)请求都转发到8001。

server {
listen 80;
server_name _(填写域名,不填的话请删除这个括号内容);

location / {
proxy_pass http://127.0.0.1:8001;
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;
}
}

重启nginx使配置生效

service nginx restart

4. 浏览器访问网站即可