应用场景:
为了解决 类似于 微信开发等 需要在线上外网服务器验证 的调试。
需求:将线上的请求转发到本地 进行调试
方案:
服务器开启ssh的转发功能->nginx配置转发节点->xshell等ssh客户端链接服务器,同时配置隧道链接。
具体配置步骤:
1.服务器安装好ssh服务,确保开启 ssh 转发功能。可能需要在 /etc/ssh/ssh_config 配置文件 增加 GatewayPorts yes。
2.在原有线上站点nginx 配置文件中增加server节点。例如:
server {
listen 80;
server_name proxyadmin.stlchn.com;
location / {
proxy_pass http://localhost:10001; //转发当前节点下的域名到 本地机器的10001 端口。需要重启nginx后 nginx 会创建本地 tcp 服务端口 10001。
proxy_set_header host $http_host;
}
}
//补充: 修改完配置文件后 一定 nginx -t,检查配置文件是否正确。
然后 service nginx restart
之后 netstat -anp | grep 10001 查看端口是否已经创建,处于监听状态。
到此为止 nginx 已经为你创建了tcp 服务监听端口,ssh隧道转发功能已经开启。
3.配置xshell 的隧道转发功能.配置完后需要开启当前对应的ssh链接,开发者本地机器才能正常接收到服务端的转发请求。
用xshell等工具建立好 同服务器的链接,然后修改 配置属性中的隧道链接,添加,选中 incoming 类型。端口为 刚创建的端口。其他数据如图。保存确定后,本地开启断点调试。浏览器访问 用于转发的 额外二级域名 proxyadmin.stlchn.com 下的请求即可将线请求转发到本地。
1.
2.
3.
请注意,上述配置 仅仅只会把 到这个站点的 线上请求转发到本地的80 端口,但是不保证被你哪个项目监听到。所以,如果你的桌面是像下面这样的,请只开启对应项目的 xdebug的监听按钮。不喜勿喷,有错误请指教。