美文网首页
SpringBoot 实现反向代理

SpringBoot 实现反向代理

作者: 金_鹏 | 来源:发表于2019-07-19 11:17 被阅读0次

    在项目开发中,使用springboot开发一个非前端后端分离的项目,项目实际使用中需要使用,需要调用老系统中的接口,因此想实现反向代理,通过前端代码直接访问老系统中的接口

    1. 引入相关依赖

     <dependency>
            <groupId>org.mitre.dsmiley.httpproxy</groupId>    
            <artifactId>smiley-http-proxy-servlet</artifactId>
            <version>1.7</version>  
    </dependency>
            <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>18.0</version>
    </dependency>
    

    2. 配置相关代理设置

    # 自定义代理相关配置
    # 代理的本地路由
    proxy.servlet_url: /api/*
    # 要代理的地址
    proxt.target_url: http://www.baidu.com
    
    

    3. 声明proxy的servlet,并对其进行配置即可:

    package top.jetlee.wx.Config;
    
    
    import com.google.common.collect.ImmutableMap;
    import org.mitre.dsmiley.httpproxy.ProxyServlet;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    
    import javax.servlet.Servlet;
    import java.util.Map;
    
    /**
     * @Description: 实现代理配置
     * @Parameters:
     * @Return:
     * @CreateDate: 2019/7/19 9:52
     * @Version: V1.00
     * @Author: jetlee
     */
    @Configuration
    public class SolrProxyServletConfiguration {
    
        // 读取配置文件中路由设置
        @Value("${proxy.servlet_url}")
        private String servlet_url;
        // 读取配置中代理目标地址
        @Value("${proxt.target_url}")
        private String target_url;
    
    
    
        @Bean
        public Servlet createProxyServlet(){
            // 创建新的ProxyServlet
            return new ProxyServlet();
        }
        @Bean
        public ServletRegistrationBean proxyServletRegistration(){
            ServletRegistrationBean registrationBean = new ServletRegistrationBean(createProxyServlet(), servlet_url);
            //设置网址以及参数
            Map<String, String> params = ImmutableMap.of(
                    "targetUri", target_url,
                    "log", "true");
            registrationBean.setInitParameters(params);
            return registrationBean;
        }
    }
    

    3.测试效果

    访问本地请求,可以看到已经代理到我们的目标地址了


    image.png

    相关文章

      网友评论

          本文标题:SpringBoot 实现反向代理

          本文链接:https://www.haomeiwen.com/subject/htdjlctx.html