利用的工具和服务:Fiddler(可选)、SSH

1.代理路径

请求接口–>网关–>SSH–>Fiddler–>到本地服务

2.操作步骤

2.1.网关配置(nginx)

defalut.conf 的http 节点

  location /api/debug/sync/ {
    proxy_pass http://172.20.0.19:8888;
  }

调试哪个接口定义哪个地址:location

2.2.准备SSH服务

services:
  alpine-sshd:
    container_name: ssh
    restart: always
    ports:
            - 2222:22
            - 8888:8888
    image: sickp/alpine-sshd

    networks:
       mynet:
         ipv4_address: 172.20.0.19
networks:
  mynet:
    external: true

注意点:进入ssh容器内部修改,可以密码登录,可以端口转发

docker exec -it ssh bash
sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/^PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/^#AllowTcpForwarding.*/AllowTcpForwarding yes/' /etc/ssh/sshd_config
sed -i 's/^AllowTcpForwarding.*/AllowTcpForwarding yes/' /etc/ssh/sshd_config

用passwd命令修改一下密码,接下来端口隧道时候用 1.xshell通过2222连接,然后建立隧道

调试接口.png

2.登录容器,设定转发到公共端口

docker exec -it ssh bash
ssh -g -Nf -L 8888:localhost:8887 localhost

原理:

2.利用了网关的代理服务,proxy_pass 3.SSH的上下游转发功能 上游连接网关、下游连接本地XSHELL 注意点: 1.这里的networks要和网关一个网段,好让网关进行请求 2.开的2222端口,为了使本地连接到远程这个SSH服务 3.8888这个是调试接口API的端口,其实也可以是Fiddler端口

可以选择镜像,不污染宿主机SSH服务,用完之后关闭即可