Atitit 实现反向代理 1 ----url rewrite 配置and内容改写 and -绝对路径链接改写 java

本文主要是介绍Atitit 实现反向代理 1 ----url rewrite 配置and内容改写 and -绝对路径链接改写 java,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

Atitit.实现反向代理(1)----url rewrite  配置and内容改写 and -绝对路径链接改写 java php

 

1. 代理的实现:::普通代理and反向代理?? 1

2. url rewrite 的框架选型 1

3. ---------反向代理rewrite 配置mode_rewrite 1

1. Java的实现 2

4. 排除自身(apache_mode_rewrite) 2

2. Java的实现 排除自身 2

5. 内容改写(php mode_rwt) 3

3. Java 内容改写 3

6. 内容改写---绝对路径链接改写 4

4. Abs url 2 /app/http://xxxxxx.jpg 4

5. Filter 二次导航 4

6. 判断and代替改写 5

7. 引用 6

 

 

1. 代理的实现:::普通代理and反向代理??

普通代理设置麻烦的,韩式反向代理容易的实现..

 

反向代理使用流程:: localhost/vod/    >>url rewrite   >>>内容更改

 

2. url rewrite 的框架选型

Php的mode_rewrite好的...java的org.tuckey.web.filters.urlrewrite.UrlRewriteFilter 不太好使用,,,子好嘎自实现兰...

 

作者::老哇的爪子Attilax艾龙,EMAIL:1466519819@qq.com

转载请注明来源:http://blog.csdn.net/attilax

 

3. ---------反向代理rewrite 配置mode_rewrite

 

RewriteCond %{REQUEST_URI} !=/process.php

RewriteRule  ^(.*)$    /process.php?file=http://www.budejie.com/$1&noext=1 [L] [L]

 

1. Java的实现

 <!--o8j2   -->

 <filter>

  <filter-name>urlrwt</filter-name>

  <filter-class>com.attilax.net.urlRewriteFilterAti</filter-class>

   

 </filter>

 

 <filter-mapping>

  <filter-name>urlrwt</filter-name>

  <url-pattern>/*</url-pattern>

 </filter-mapping>

 

 <!-- end o8j2-->

 

 

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/spr/txtrwt?url="+url+"&urlNoHost="+url_noHost2);

        requestDispatcher.forward(request, response);//

 

4. 排除自身(apache_mode_rewrite)

RewriteCond %{REQUEST_URI} !=/process.php

RewriteCond %{REQUEST_URI} !^.*(\.js|\.gif|\.png|\.jpg|\.jpeg|\.xml|\.ico|\.css)

 

 

#other pic css js proxy 

RewriteCond %{REQUEST_URI} !=/process.php

RewriteCond %{REQUEST_URI} !=/lensyaohwer/basic.png

RewriteRule  ^(.*)$    http://lengxiaohua.com/$1 [P,L]

 

2. Java的实现 排除自身

    //except    

 if(requestURI.contains("spr/txtrwt"))

 {

 chain.doFilter(request, response);

 return;

 }

5. 内容改写(php mode_rwt)

a.文本正则表达式方式

 $content=preg_replace('/百思不得姐/', '哈米', $content);

$content=str_replace('http://img.spriteapp.cn/ws/www/img/layout/logo.png', 'http://img.spriteapp.cn/ws/www/img/layout/logoxx.png', $content);

$content=str_replace('不得姐', '哈米', $content);

 

b.html dom 方式

 //nbp

  require_once  "simple_html_dom.php";

  $html = str_get_html($content); 

  $arr= $html->find('.web_content_right .web_right_down',0) ;

 $arr->innertext='a2';

 echo  $html ;

 

3. Java 内容改写

@RequestMapping(value = "/txtrwt", produces = "text/plain;charset=gb2312")

// @ResponseBody

public Object process(HttpServletRequest request,

HttpServletResponse response) throws Exception {

core.log("=========process.json");

String url = "" + request.getParameter("url");// +"?"+request.getQueryString();

String url_no_host=request.getParameter("urlNoHost");

// System.out.println(); request.getParameter("tid")

System.out.println(request.getQueryString());

if (url.endsWith("jpg") || url.endsWith("jpeg") || url.endsWith("gif")) {

if(url_no_host.startsWith("/http://"))

{

String url3=url_no_host.replaceAll("/http://", "http://");

  byte[] ba = websitex.WebpageContent_Bin(url3);

  if( !isLjJpg(ba) )

  outputImg(response, url);

}

else

outputImg(response, url);

}

//

else

outputTxt(response, url,request);

return null;

}

6. 内容改写---绝对路径链接改写

4. Abs url 2 /app/http://xxxxxx.jpg

private void outputTxt(HttpServletResponse response, String url, HttpServletRequest request)

throws UnsupportedEncodingException, IOException {

 

 Map<String, String>  headProps =  Mapx

.<String, String> $()

.add("Cookie",

"lastfid=0; lastvisit=9271%091408838229%09%2Fread.php%3Ftid%3D1715718%26fpage%3D2; ol_offset=32204; ipstate=1408836660; __utma=99888095.1396678057.1405101634.1408806230.1408837132.29; __utmz=99888095.1405101634.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=99888095; pin6=done; __utmb=99888095.3.10.1408837132")

.toMap() ;

 

 

String txt=websitex.WebpageContentO8f  (url,"gbk",headProps);

txt=txt.replaceAll("http://", pathx.webAppPath_webfmt(request)+ "/http://");

 

 

5. Filter 二次导航

 if(url_noHost.startsWith("/http://"))

 {

String url5=url_noHost.substring(1, url_noHost.length());

String url5_encode= URLEncoder.encode(url5);

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/spr/imgrwt_abspath?url="+url5_encode+"&urlNoHost="+url_noHost2);

        requestDispatcher.forward(request, response);//

        return;

 }

6. 判断and代替改写

@RequestMapping(value = "/imgrwt_abspath")

// @ResponseBody

public Object process_imgrwt_abspath(HttpServletRequest request,

HttpServletResponse response) {

core.log("=========process.json");

String url = "" + request.getParameter("url");// +"?"+request.getQueryString();

String url_no_host = request.getParameter("urlNoHost");

// System.out.println(); request.getParameter("tid")

System.out.println(request.getQueryString());

 

byte[] ba = websitex.WebpageContent_Bin(url);

if (!isLjJpg(ba))

outputImg(response, url);

if(isLjJpg(ba))

outputImg_garfile_holder(response );

return null;

}

/**

@author attilax 老哇的爪子

\t@since  Aug 23, 2014 8:48:02 PM$

 * @param response

 */

private void outputImg_garfile_holder(HttpServletResponse response) {

// attilax 老哇的爪子 8:48:02 PM Aug 23, 2014

 

{

String url = pathx.classPath() + "/com/attilax/clr/def.jpg";

byte[] ba = filex.readImageData(url);

outputImg(response, url, ba);

}

 

}

 

7. 引用

paip.基于urlrewrite的反向代理以及内容改写 

 

我要啦免费统计           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

这篇关于Atitit 实现反向代理 1 ----url rewrite 配置and内容改写 and -绝对路径链接改写 java的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/364581

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。