外网访问测试机。

Windows机器使用SSH反向隧道。服务端使用反向代理

  1. win下安装openssh-win并设置环境变量

  2. 打开cmd 

    C:\Users\Administrator>ssh -p 22 -R 1999:localhost:8080 -b 0.0.0.0 root@8.8.8.8

    -R 1999远程机器的端口

    -b 外网段监听,不加是 127.0.0.1监听

        (有的版本加 -b 无法连接。可以监听127.0.0.1 ,然后在linux上用iptables转发一下 iptables -t nat -A PREROUTING -d 8.8.8.8 -p tcp --dport 11999 -j DNAT --to-destination 127.0.0.1:1999)

    8080 本机端口

    这样外网访问 8.8.8.8的1999端口就映射到了localhost的8080

  3. vi /etc/ssh/sshd_conf  sshd打开转发

    114行

    GatewayPorts yes

  4. 服务器nginx反向代理

    vi nginx.conf

    upstream dev {

        server 127.0.0.1:1999;

    }

    server {

        listen 80;

        server_name dev.xx.com;

        location / {

                proxy_pass http://dev;

        }

        proxy_ignore_client_abort on;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

5. dev.xx.com 可以访问到 localhost:8080