使用nginx反向代理到内网的ipython notebook
2018-10-21 01:04:48
起因
有的时候打算用一下公司电脑的资源,不过公司的电脑肯定是没有外网ip的,所以要做流量转发,把公司电脑某个端口的流量转发到一台有外网ip服务器的端口上面。
这里需要一台有外网ip的服务器,然后通过访问”外网ip:port”的方式,就可以访问到公司电脑上部署的http服务。我这块需要的http服务是ipython notebook,可以十分方便的编写python代码。
启动ipython notebook
这里先启动ipython notebook。
1 | ipython notebook --ip=0.0.0.0 |
流量转发
接下来,我们需要做流量转发,首先保证ssh免登陆已经弄好。
免登陆可以通过ssh-copy-id来进行配置。
1 | ssh-copy-id user@hostname |
然后,通过以下命令,我们可以把内网的8888端口的流量,转发到服务器的7777端口。
1 | nohup ssh -gR 7777:hostname:8888 user@hostname "vmstat 30" & |
也就是访问hostname的7777端口就相当于访问公司电脑的8888端口了。
nginx代理配置
按理说,到上面的配置已经结束了。但是我发现并不行。这里通过尝试,我发现在服务器的内部可以通过w3m命令(w3m是linux上的一款无界面的浏览器,可以通过apt-get安装)访问到7777端口。所以我估计是7777端口只绑定到了服务器的内网中,并没有放到公网。
我现在通过nginx反向代理到本地的7777端口,才能访问ipython notebook。
经过搜集资料,我找到了ipython notebook的nginx配置如下:
1 | server { |
到这里,重启nginx,发现访问http://hostname:6666就可以了。