java - Spring boot Resttemplate动态代理设置通过ssh隧道连接无法识别远程DNS

标签 java spring spring-boot proxy ssh-tunnel

我正在尝试通过 SSH 隧道到达远程服务器以获取一些 Rest 请求。我已经通过 putty 设置了一个动态代理来将流量代理到远程服务器。使用浏览器访问远程服务时,它按预期工作。

我创建了一个 Resttemplate 代理,以使用本地动态代理通过 SSH 隧道连接到远程服务。我遇到的问题是我的应用程序无法解析远程 DNS 来查找远程服务器。因此,我收到 java.net.UnkonwnHostException 错误。我知道通过浏览器访问,通常还应该设置一个属性来为 DNS 请求启用代理。我不确定 Spring Boot Resttemplate 代理设置是否有这样的东西。请找到我的代理设置代码如下。

@Configuration
public class ProxyCustomizer implements RestTemplateCustomizer {
    @Autowired
    private ProxyConfig proxyConfig;


    @Override
    public void customize(RestTemplate restTemplate) {
        if (proxyConfig == null) return;
        HttpHost proxy = new HttpHost(proxyConfig.getHostname(), proxyConfig.getPort());
        HttpClient httpClient = HttpClientBuilder.create()
                .setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {

                    @Override
                    public HttpHost determineProxy(HttpHost target,
                                                   HttpRequest request, HttpContext context)
                            throws HttpException {
                        return super.determineProxy(target, request, context);
                    }

                }).build();
        restTemplate.setRequestFactory(
                new HttpComponentsClientHttpRequestFactory(httpClient));
    }
}

我也尝试过使用 Socks 和 HTTP 代理系统属性,但没有成功:

socks :

    System.getProperties().put( "proxySet", "true" );
    System.getProperties().put( "socksProxyHost", "127.0.0.1" );
    System.getProperties().put( "socksProxyPort", "9001" );

HTTP 代理:

    props.put("http.proxyHost", "127.0.0.1");
    props.put("http.proxyPort", "9001");
    props.put("https.proxyHost", "127.0.0.1");
    props.put("https.proxyPort", "9001");

最佳答案

我找不到解决此问题的方法。但是,可以将记录添加到 /etc/hosts 文件中作为解决方法。

关于java - Spring boot Resttemplate动态代理设置通过ssh隧道连接无法识别远程DNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55915317/

相关文章:

java - Json 字符串到具有动态键名称的 Java 对象

java - Tomcat 在 INFOS : Initializing Spring root WebApplicationContext after migration to Spring 3. 2.3.RELEASE 之后不继续

多个 IDP 的 Spring SAML 扩展

java - 安装和运行 Spring Boot 应用程序时出现问题

java - 获取正在执行的类的文件系统路径

java - 如何在嵌套的java到scala数据类型之间转换

java - 如何修复 mysql 上的零(0)用户名

java - 如何确定要使用哪个 spring 上下文?

spring - 临时上传位置[/tmp/tomcat.4296537502689403143.5000/work/Tomcat/localhost/ROOT]无效

spring-boot - Spring webclient - 每次重试后增加超时持续时间