• 欢迎访问爱玩吧
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏爱玩吧

【阿里云】阿里云ECS内网服务器通过同区域另一台外网服务器共享上网并对外发布(通过nginx)

建站资源 aiwanyule 9年前 (2016-05-11) 已收录

阿里云ECS内网服务器通过同区域另一台外网服务器共享上网并对外发布(通过nginx)

手里现有一台公网win03服务器,想再来一台linux服务器,由于都是玩的,而且通过nginx可以将内网的发布出去linux服务器就没买带宽。原以为内网服务器外网可入不可出,没想到出入都不行,linux很多软件的安装直接用命令很方便,现在难道要先再win服务器上下载好再上传上去,悲剧了。还是先试试,在win服务器上开启了nat(路由和远程服务),理论上内网其他机器可以设置网管为win服务器的内网IP然后就可以共享上网了,结果在linux里设置网关失败,可能是两台服务器的内网IP不在同一网段上(两个IP都是10开头,但后面三段不同。以前用过IP前两段相同的可以设置),对linux还不是很熟,就没再多试。

还好win服务器上装着nginx,用nginx设置好正向代理,再修改下linux的代理配置,直接可以在linux服务器上使用 apt-get、npm等命令安装网络内容了。

1、win服务器nginx正向代理配置,再http{}中增加:

server{        resolver 10.161.209.111; #win服务器内网IP

listen 809; #代理上网的端口        location / {

}

}

2、linux服务器代理上网配置

vi ~/.bashrc在.bashrc文件末尾添加如下内容export http_proxy

3、在win服务器nginx加入反向代理,指向内网linux服务器,将内网内容发布出去。

server {       listen 80;  

server_name *.域名.com 域名.com;  

location / {        

proxy_set_header Host $host;          proxy_set_header X-Real-IP $remote_addr;  

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       }  

}

现在好了,在linux服务器上安装网络上的软件了,网站通过域名也可以直接访问了。不过ssh管理和上传文件还要通过外网win服务器也挺麻烦的。linux版的nginx可以安装tcp代理模块,然后代理linux服务器的ssh和ftp(ssh和ftp都使用的tcp协议)端口就可以了,但是win版的nginx没找到tcp模块(不太熟也没做过多研究)。只好利用win服务器上装的nodejs写一个tcp代理模块。将win服务器上22端口指向linux服务器22端口。

nodejs代码:

var net = require(‘net’);var addrRegex = /^(([a-zA-Z\-\.0-9]+):)?(\d+)$/;var addr = {        from: addrRegex.exec(process.argv[2]),        to:addrRegex.exec(process.argv[3])}; if (!addr.from || !addr.to) {        console.log(‘Usage: <from> <to>’);        return;}net.createServer(function(from) {        var to = net.createConnection({                host: addr.to[2],                port: addr.to[3]               });        from.pipe(to);        to.pipe(from);}).listen(addr.from[3], addr.from[2]);

保存为 forward.js运行:node forward.js 22    10.171.223.111:22

第一个22是win服务器的端口,后面ip:port指向到linux服务器好了,先可以通过ssh win服务器外网IP,直接连接到linux服务器了,也可以通过FileZilla的sftp通过ssh端口管理linux服务器文件了。

简单记录一下。帖子内容不能有网址,部分内容只好改图片了。


爱玩吧 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【阿里云】阿里云ECS内网服务器通过同区域另一台外网服务器共享上网并对外发布(通过nginx)
喜欢 (0)