最简单的代理转发方式是直接在服务器上对nginx进行转发配置,在此处不做详述。
以下介绍通过Java和Springboot来实现正向代理的具体步骤与代码。
1.创建Springboot web工程
需注意创建web工程,否则无法找到相应的servlet依赖。
2.proxy的config
package com.proxy.edu.config;
import org.mitre.dsmiley.httpproxy.ProxyServlet;
import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
@Configuration
public class ProxyServletConfiguration implements EnvironmentAware {
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_one"));//servlet_url_one为暴露的网址
servletRegistrationBean.setName("suitone");
servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_one"));//target_url_one为我们的目的网址,即代理访问的网址,该项在之后进行具体配置
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false"));
return servletRegistrationBean;
}
private RelaxedPropertyResolver propertyResolver;
@Override
public void setEnvironment(Environment environment) {
this.propertyResolver = new RelaxedPropertyResolver(environment, "proxy.test.");
}
}
3.Application
非常简单,和springboot的常规application一样。
package com.proxy.edu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class EduApplication {
public static void main(String[] args) {
SpringApplication.run(EduApplication.class, args);
}
}
4.代理网址及相关端口配置
在application.properties中进行配置。
## server端口号配置
server.port=8091
server.tomcat.max-threads=1000
server.tomcat.max-connections=1000
## servlet_url_one——localhost:8081/testone/*
proxy.test.servlet_url_one=/test/*
proxy.test.target_url_one=http://localhost:8080
## 代理目标
#日志将来输出的位置,注意在logback-spring.xml里需要用LOG_PATH才能获取到值
logging.path=logs/restlogs
##指向logback-spring的配置文件
##logging.config=classpath:logback-spring.xml
#控制台打印日志格式设置,注意在logback-spring.xml里用CONSOLE_LOG_PATTERN才能获取到
logging.pattern.console=[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n
#文件打印日志格式设置,注意在logback-spring.xml里用FILE_LOG_PATTERN才能获取到
logging.pattern.file=[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n
# 页面默认前缀目录
spring.mvc.view.prefix=/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
spring.mvc.date-format=yyyy-MM-dd
spring.jackson.date-format=yyyy-MM-dd
spring.jackson.time-zone=GMT+8
以上,在程序成功运行后,我们可以通过访问http://localhost:8091/test/*来间接访问http://localhost:8080的内容。