在开发项目中,遇到在本地环境请求域名正常,但在生产环境中因使用了nginx反向代理,在请求时DNS域名进行解析,真正请求出去的为IP与端口,但对方系统是ip下面配置了多个服务,通过nginx的server_name进行区分,故直接请求不通,所以请求方式有两种:1、域名请求;2、IP端口请求,但请求时需添加host;
针对生产情况,
1、在restTemplate请求时增加host
HttpHeaders headers = new HttpHeaders();
// System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
//System.setProperty("jsse.enableSNIExtension", "true");
headers.add(HttpHeaders.HOST,"xxxxx.com");
HttpEntity<Map> httpEntity = new HttpEntity(bizMap, headers);
// Map<String, String> respMap = restTemplate.postForObject(url, bizMap, Map.class);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(paramConfig.getDfcApiHost() + path, httpEntity, String.class);
Map<String, String> respMap = JSON.parseObject(responseEntity.getBody(), new TypeReference<Map<String, String>>() {
});
2、在nginx配置项中增加
proxy_ssl_server_name on;