今天遇到这么一个场景,有一个服务器A是能链接到互联网,只能与内网中的网络通讯。服务器B能链接到互联网,并且A与B之间网络是互通的。A上面搭载着JAVA服务,在不改动代码的情况下,如何让A链接上互联网?
一、最开始的解决方案。
最开始的解决方案是使用nginx做正向代理,即在B上面搭建nginx,然后把请求目标的域名指向B的ip,让B进行转发。
结果:nginx无法转发https的请求,有尝试过使用插件,但是插件编译时出现问题,结果否定了这个方案。
二、解决方案。
使用squid在B上面做正向代理,在A上面配置linux全局代理指向B,在A JVM 中配置代理指向B
三、操作步骤
在B中下载squid
yum install squid
配置squid
echo "1" >/proc/sys/net/ipv4/ip_forward #打开内核转发,在CentOS7中已经打开,无需设置。
vi /etc/squid/squid.conf
启动squid
service squid start
在A中配置代理
vim /etc/profile
加入以下配置
在A JVM 中加入以下启动参数
java中配置代理
java中支持 HTTP代理、HTTPS代理、Socket代理、FTP代理 等。
-DproxyHost
-DproxyPort [默认值:80]
-DnonProxyHosts