问题描述:
有一台服务器A可以访问外网,
服务器B和服务器C和A在一个局域网内,
并且无法访问外网.
想通过A的中转B/C都可以访问外网
请求都是http
1.SpringBoot工程配置文件改写
# dev开发域名访问配置 domain: baidu-map: api.map.baidu.com tianditu-map: api.tianditu.gov.cn gaode-map: restapi.amap.com weixin: api.weixin.qq.com
# prod线上域名访问配置
# 域名访问配置
domain:
baidu-map: 内网ip:内网互通端口/baiduMap
tianditu-map: 内网ip:内网互通端口/tiandituMap
gaode-map: 内网ip:内网互通端口/gaodeMap
weixin: 内网ip:内网互通端口/weixinUrl
2. SpringBoot静态工具类注入配置文件变量
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class DomainConfig {
private static String baiDuDomain;
private static String tianDiTuDomain;
private static String gaoDeDomain;
private static String weiXinDomain;
public static String getBaiDuDomain() {
return baiDuDomain;
}
@Value("${domain.baidu-map}")
public void setBaiDuDomain(String baiDuDomain) {
DomainConfig.baiDuDomain = baiDuDomain;
}
public static String getTianDiTuDomain() {
return tianDiTuDomain;
}
@Value("${domain.tianditu-map}")
public void setTianDiTuDomain(String tianDiTuDomain) {
DomainConfig.tianDiTuDomain = tianDiTuDomain;
}
public static String getGaoDeDomain() {
return gaoDeDomain;
}
@Value("${domain.gaode-map}")
public void setGaoDeDomain(String gaoDeDomain) {
DomainConfig.gaoDeDomain = gaoDeDomain;
}
public static String getWeiXinDomain() {
return weiXinDomain;
}
@Value("${domain.weixin}")
public void setWeiXinDomain(String weiXinDomain) {
DomainConfig.weiXinDomain = weiXinDomain;
}
}
3. SpringBoot 使用
注意: 这里的请求都是http, https需要配置nginx(这里不做介绍)
private static String baiDuDomain = DomainConfig.getBaiDuDomain();
// 替换掉原有域名, 根据配置文件自动设置
public static String ADMIN_DIVISION__URL = "http://"+baiDuDomain+"/place/v2/search?query=QUERY&tag=TAG®ion=REGION&output=json&ak=" + API_KEY; // GET请求
4. 配置Nginx
^~/
# 百度地图
location ^~/baiduMap/ {
proxy_pass http://api.map.baidu.com/;
}
# 高德地图
location ^~/gaodeMap/ {
proxy_pass http://restapi.amap.com/;
}
# 天地图
location ^~/tiandituMap/ {
proxy_pass http://api.tianditu.gov.cn/;
}
# 微信
location ^~/weixinUrl/ {
proxy_pass http://api.weixin.qq.com/;
}