使用SSH和Nginx做内网HTTP映射

场景

我想把家里监控的80端口映射到我的VPS的80端口上,从而能够通过访问VPS来访问家里的监控。

路由器是极路由,已开启SSH。

监控IP为10.0.0.10,端口80。

VPS地址为hk.gcc.ac.cn。

步骤

  • 极路由上操作,将VPS的2222端口转发到极路由的3333端口。
ssh -R 2222:localhost:3333 hk.gcc.ac.cn
  • 在VPS上操作,将VPS的80端口转发到VPS的2222端口,且允许外部访问(-g参数)。
ssh -g -L 80:localhost:2222 localhost
  • 极路由上操作,设置端口转发。外部端口3333,内部10.0.0.10:80。采用Nginx反向代理。(极路由自带Nginx)这里将下面的内容保存到/etc/nginx/vh.jiankong.conf
upstream jiankong  {
    server 10.0.0.10:80;
}

server {
    listen 3333;
    location / {
        proxy_pass http://jiankong;
    }
}
  • 注:我尝试过使用iptables进行端口转发,但是内网能访问,转发出去却不能访问。
iptables -t nat -I PREROUTING -p tcp --dport 3333 -j DNAT --to 10.0.0.10:80