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://"))

{

, 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的反向代理以及内容改写

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

  1. Nginx插件之openresty反向代理和日志滚动配置案例

    Nginx插件之openresty反向代理和日志滚动配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.openresty介绍 1>.Nginx介绍 Nginx是一款 ...

  2. nginx 反向代理及 https 证书配置

    nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...

  3. Nginx反向代理实现负载均衡配置图解

    Nginx反向代理实现负载均衡配置图解 [导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. ...

  4. 一文教您如何通过 Docker 搭建反向代理 Ngnix,并配置 Https SSL 证书

    欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注附送 100G 海量学习资源哟!! 个人网站: https://www.exception.site/docker/h ...

  5. nginx反向代理的nginx.conf配置

    下面的配置是nginx.conf的示例 nginx反向代理 就是说把跨域的url通过本地代理的方式,变成同域的请求,如此来解决跨域问题 该配置下 通过http://localhost/html5/路径 ...

  6. 002-nginx-在 nginx 反向代理中使用域名,配置动态域名解析

    一.概述 代理(proxy),即中间人,它代替客户端发送请求给服务器,收到响应后再转给客户端.通常意义上的代理是从用户的角度讲的,用户通过某个代理可以访问多个网站,这个代理是靠近用户的,比如某些公司可 ...

  7. nginx反向代理负载均衡初次配置

    反向代理,我个人理解是通过一台反向代理服务器,把客户端的把有请求按照一定的规则分发给后台的服务器.nginx作反向代理服务器的虚拟机配置如下: upstream itest { #正常情况下应该作如下 ...

  8. nginx 反向代理实现负载均衡*配置实战

    重要点: 1配置反向代理多虚拟主机节点服务器 2经过反向代理后的节点服务器记录用户IP 3与反向代理配置相关的更多参数说明 4根据URL目录地址转发 (1)根据URL中的目录地址实现代理转发(动静分离 ...

  9. docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https

    假设docker已经安装好了,如果没有安装,可以照着 5分钟安装docker教程. 一. 下载镜像 默认下载最新版本,如果想指定对应版本,可以用冒号后加版本,像这样mysql:5.7: docker ...

随机推荐

  1. Python_sklearn机器学习库学习笔记(一)_一元回归

    一.引入相关库 %matplotlib inline import matplotlib.pyplot as plt from matplotlib.font_manager import FontP ...

  2. Java核心知识点学习----线程同步工具类,CyclicBarrier学习

    线程同步工具类,CyclicBarrier日常开发较少涉及,这里只举一个例子,以做备注.N个人一块出去玩,相约去两个地方,CyclicBarrier的主要作用是等待所有人都汇合了,才往下一站出发. 1 ...

  3. 搭建angular前端框架 命令

    首先必备的工具都下下好. 然后现在开始输入命令行创建angular 项目 1.node cd .. 2.yo bower grunt 3.npm install -g generator-angula ...

  4. Python:装饰器

    格式:在执行的参数前加上@functon 例1:传一个参数 #模拟验证功能 def login(auth): def fun(arg): #为了避免程序一执行的时候就执行验证,需要再加一层函数. pr ...

  5. each处理json数据

    eg:给传进来的ID中当其对应的值为true时,即给对应的ID标签添加一个class 名为  focus,如: var obj = { id01:'true', id02:'flase', id03: ...

  6. 手机驱动无法正常安装,出现adb interface失败

    手机一直无法用usb连接上电脑,试了各种方法,总是提示安装驱动失败,或者找不到文件. 在网上找了各种方法,后来结果证明,是我自己手贱了,... 方法: Win7系统用户已经碰到几次在安装adb驱动时提 ...

  7. oracle删除数据恢复

    分为两种方法:scn和时间戳两种方法恢复. 一.通过scn恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database; (切换到sys用 ...

  8. UICollectionView进阶练习

    上一篇中的干货看完,不觉感觉还是有点虚,今天我们来点实的,做了两个小DEMO,源码已放GitHub,主要是针对UICollectionView做了联系.第一个DEMO是针对UICollectionVi ...

  9. Sql Server 简单查询 异步服务器更新语句

    //结构:select 子句 [into 子句] from 子句  [where 子句] [group by 子句]  [having 子句] [order by 子句] select  dept_c ...

  10. 王爽-汇编语言-综合研究一-搭建简易C环境

    (一) 学习过程: 整个过程分为两个部分: 第一:将TC2.0的环境使用虚拟软盘复制到DOS虚拟机中: 打开WinImage,fileànew,由于TC2.0的环境解压后为2.02M,所以我们在Sta ...