幾個java proxy servlet 工具

HTTP-Proxy-Servlet

這個工具使用比較簡單,能夠經過配置,或者代碼的方式 https://github.com/mitre/HTTP-Proxy-Servlethtml

  • servlet 配置方式
<servlet>
 <servlet-name>clusterProxy</servlet-name>
 <servlet-class>org.mitre.dsmiley.httpproxy.URITemplateProxyServlet</servlet-class>
 <init-param>
 <param-name>targetUri</param-name>
 <param-value>http://{_subHost}.behindfirewall.mycompany.com:{_port}/{_path}</param-value>
 </init-param>
 <init-param>
 <param-name>log</param-name>
 <param-value>true</param-value>
 </init-param>
</servlet>
<servlet-mapping>
 <servlet-name>clusterProxy</servlet-name>
 <url-pattern>/mywebapp/cluster/*</url-pattern>
</servlet-mapping>
  • spring boot 代碼方式
@Configuration
public class SolrProxyServletConfiguration implements EnvironmentAware {
 @Bean
 public ServletRegistrationBean servletRegistrationBean(){
 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url"));
 servletRegistrationBean.addInitParameter(ProxyServlet.P_TARGET_URI, propertyResolver.getProperty("target_url"));
 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.solr.");
 }
}
  

yaml 配置git

proxy:
 solr:
 servlet_url: /solr/*
 target_url: http://solrserver:8983/solr
 
 

Jetty's ProxyServlet:

這個是最全也是比較複雜的一個實現
https://www.eclipse.org/jetty/documentation/9.4.x/proxy-servlet.htmlgithub

netflix zuul

spring cloud netflix zuul gateway 使用的技術https://github.com/Netflix/zuul,目前主要包括了兩個版本1.x 以及 2差別仍是比較大的
zuul 不一樣filter 階段處理的方式很不錯,比較靈活web

charon-spring-boot-starter

功能很全,很方便的一個工具
https://github.com/mkopylec/charon-spring-boot-starter/wikispring

  • 簡單使用
 
import static com.github.mkopylec.charon.configuration.CharonConfigurer.charonConfiguration;
import static com.github.mkopylec.charon.configuration.RequestMappingConfigurer.requestMapping;
import static com.github.mkopylec.charon.forwarding.interceptors.rewrite.RequestServerNameRewriterConfigurer.requestServerNameRewriter;
@Configuration
class CharonConfiguration {
 @Bean
 CharonConfigurer charonConfigurer() {
 return charonConfiguration()
 .set(requestServerNameRewriter().outgoingServers("host1:8080", "host2:8081"))
 .add(requestMapping("all requests mapping"));
 }
}
相關文章
相關標籤/搜索