项目部署之VPN+端口映射
背景:出差开发项目,需要在客户那里部署基本成型的系统。这套系统需要一个公网的ip地址(一个后台管理系统,使用花生壳提供域名服务、一个公网的tcp server,java io实现),但是客户那里无法提供一个公网ip地址,而且ip地址是自动分配的(经过了2级路由),每次获取都不一样,在客户那里的花生壳就用不上了。经过各种探索,一个同事突发奇想,可以使用VPN+端口映射的方法来访问搭建的客户那里的系统,具体思路如下:
1、还是需要一个公网ip地址,这个服务器(暂且称为company_server)在哪里就不重要了,反正公司里面有一台,就用它吧;
2、在有公网ip地址的服务器上面做两件事:搭建VPN Server和配置路由的端口映射;
3、在客户那里的服务器(暂且称为customer_client)上面做vpn client,这样company_server就可以通过vpn隧道连接到customer_client(这里连接的方向很重要,不是customer_client去连接company_server,vpn技术使我们在感觉上两台服务器是在同一个局域网里面);
4、把系统部署在customer_client上;
5、访问的地址就变成了company_server的地址,端口号就是做了端口映射的地址,一旦访问此ip:port,就会转发给customer_client上,然后上面的系统就会受到请求。
好了,以上就是通过vpn+端口映射解决项目部署的思路;
从中我们也真切的体会到:
1、ipv4地址确实正在枯竭,ipv6应该会在不久的将来得到普及;
2、深入连接tcp/ip对开发人员尤其重要,很多东西其实都是tcp/ip的东西,本文中的vpn,其实就可以看作一个tcp_server和tcp_client把持了一个长连接,然后端口映射就在此连接上传输数据。
项目部署之VPN+端口映射的更多相关文章
- 更换光纤后路由器端口映射 -VPN相关
之前一直是ADSL的线路,使用路由器后,很简单就可以实现端口映射了!外网也可以随意连接,可是最近升级宽带更换了光纤后,发现怎么都不能正常工作了!在光纤猫里显示的IP居然是:10.0.*.*,查询到的外 ...
- 用端口映射在Apache中对每个项目分配端口,实现一个端口访问一个网站
映口映射的功能主要就是实际互联网可以访问当前进行映射的电脑,首先我们要进行路由器的端口映射,常见的开放端口有80,21,3389等,80是网站常用端口,21是FTP服务器常用端口,3389是远程桌面连 ...
- Nginx高级配置,同1台机器部署多个tomcat、配置多个域名,每个域名指向某一个tomcat下的项目,共用Nginx80端口访问;
需求说明: 只有一台服务器和一个公网IP,多个项目部署在这台机器上面,且每个项目使用一个单独的域名访问,域名访问时都通过Nginx的80端口访问.(如下图所示) 配置过程: 一.tomcat的serv ...
- nginx之location部署yii项目(不使用nginx端口转发)
前言: 之前部署yii项目的时候, 使用的是域名, 后来使用nginx进行端口转发(反向代理)来部署yii项目. 这一次部署尝试只使用location 进行部署(不需要使用端口). 先贴出nginx的 ...
- play项目部署
首先对于现场的数据库,一定要谨慎谨慎再谨慎,特别是保存有重要数据的. 使用expdp命令导入数据库: 事前准备: 1.确保linux服务器上已经正确安装oracle (10g以上版本) 2.有Xshe ...
- Maven项目部署方案
以xbank项目做为应用背景,简单说明一下Maven项目的部署方案: 1.项目说明 xbank基础服务端的11个子项目均采用Maven搭建: 其中各项目功能设计如下: froad-xbank-serv ...
- 记一次JAVAWEB项目部署
需求 原本服务器上tomcat部署了一个javaweb项目在80端口,这次要部署另一个javaweb项目在8090端口,或者同时部署在同一端口不同目录下. 解决方法 不同端口部署 不同端口部署我们需要 ...
- Docker容器内部端口映射到外部宿主机端口的方法小结
转自:https://www.cnblogs.com/kevingrace/p/9453987.html Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务.容器启动之后,容器中可以 ...
- 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署
准备知识 1.django一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. 2.uWSGI一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网关 3.nginx ...
随机推荐
- Ubuntu 14.04 – How to install xrdp in Ubuntu 14.04
http://c-nergy.be/blog/?p=5305 Hello World, Ubuntu 14.04 has been released on April 17th 2014 and we ...
- Silverlight DataGrid数据行背景颜色控制
sdk:DataGrid数据绑定后,部分特殊的行需要用不同的背景颜色来显示.(注册DataGrid的LoadingRow事件) private void radGridView_LoadingRow( ...
- redis的lua使用(EVALSHA)
redis 127.0.0.1:6379> SCRIPT LOAD "local list=redis.call('KEYS', KEYS[1] .. '*') return (tab ...
- 一款点击图片进行无限循环的jquery手风琴特效
一款点击图片进行无限循环的jquery手风琴特效,点击手风琴折合点,可以无限循环的点击下去,很炫酷的手风琴哟! 还有每张图片的文字介绍,因为兼容IE6所以找来分享给大家这个jquery特效. 适用浏览 ...
- 一款jQuery实现重力弹动模拟效果特效,弹弹弹,弹走IE6
一款jQuery实现重力弹动模拟效果特效 鼠标经过两块黑色div中间的红色线时,下方的黑快会突然掉落, 并在掉落地上那一刻出现了弹跳的jquery特效效果,非常不错,还兼容所有的浏览器, 适用浏览器: ...
- php 递归 适合刚刚接解递归的人看
递归,就是自己调用自己,当满足某条件时层层退出(后进先出). --------------------------------------------------------------------- ...
- 如何排查java.lang.NoSuchMethodError错误
今天碰到一个java.lang.NoSuchMethodException的异常.基本解决思路是: 1.检查类所在jar包的版本是否正确. 2.检查是否有jar包冲突,比如加载了多个版本的xxx.ja ...
- 05-树8 File Transfer
并查集 简单并查集:输入N,代表有编号为1.2.3……N电脑.下标从1开始.初始化为-1.合并后根为负数,负数代表根,其绝对值代表个数. We have a network of computers ...
- equals方法,hashcode()方法
Object类的equals 方法 用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写. (一)说到equals方法,不得不提一下==号. ==用于比较引用和比较原生数据类型时具有不同 ...
- 判断Check复选框是否选中
<div id="prm_div" style="font-size: 12px;" align="left"> <for ...