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

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

  1. nginx反向代理替换URL

    系列文章目录 nginx反向代理替换URL 文章目录 系列文章目录 前言 一.location作用 二.直接替换location 匹配部分 前言 nginx 提供反向代理服务,日常开发过程中有时候我们 ...

  2. Web集群案例实战 -- Nginx 反向代理根据URL中的目录地址实现代理转发 -- 案例实战

    Nginx 反向代理根据URL中的目录地址实现代理转发 -- 案例实战 前言 一.需求背景 前言 本环境是基于 Centos 7.8 系统构建Nginx学习环境 具体构建,请参考 Nginx-1.18 ...

  3. 学完Nginx/OpenResty详解,反向代理与负载均衡配置,能涨薪多少

    反向代理与负载均衡配置 接下来介绍Nginx的重要功能:反向代理+负载均衡.单体Nginx的性能虽然不错,但也是有瓶颈的.打个比方:用户请求发起一个请求,网站显示的图片量比较大,如果这个时候有大量用户 ...

  4. Nginx代理支持GRPC的反向代理和负载均衡配置

    Nginx代理gRPC反向代理和负载均衡配置 linux版本安装 一.准备和安装 #指定目录安装( /home/yyt/nginxgrpc) mkdir /home/yyt/nginxgrpc cd ...

  5. Nginx反向代理以及负载均衡配置

    一 .nginx 的优缺点: nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则 ...

  6. nginx 反向代理跨域访问配置_nginx反向代理配置去除前缀

    使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务.设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:加& ...

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

     come from: http://www.php100.com/html/program/nginx/2013/0905/5529.html 负载均衡配置是超大型机器需要考虑的一些问题,同时也 ...

  8. Nginx Oracle反向代理与负载均衡配置

    场景需求:     由于Oracle RAC模式在生产环境不建议使用SCAN IP,使用Nginx完成TCP/UTP三层的负载.   实施环境: Nginx版本:1.14.2 Nginx服务器IP: ...

  9. Nginx反向代理、使用OneinStack配置Nginx、多网站配置、多域名配置

    文章目录 一.卸载原装Nginx 二.通过 OneinStack 安装 Nginx 三.创建 vhost 四.按照提示选择或输入相关信息 文章PDF下载 配不好Nginx,誓不罢休 本教程适用于 不会 ...

最新文章

  1. 10大高性能开发宝石,我要消灭一半程序员!
  2. Chrome 0 day漏洞利用链
  3. 小学计算机课知识点总结,小学计算机教学总结3篇
  4. Python Selenium 常用方法总结
  5. linux 关于休眠得脚本,linux – 如果条件为true,请将cron作业休眠5分钟
  6. Quartz 第六课 CronTrigger(官方文档翻译)
  7. 2019.04.09 电商25 结算功能1
  8. POJ - 1127 Jack Straws(几何)
  9. 警惕分页中的checkbox
  10. 使IE6支持png透明图片
  11. Day_05显示鼠标
  12. 电线电缆行业MES解决方案
  13. 直流可逆调速控制系统matlab,逻辑无环流直流可逆调速系统的Matlab仿真
  14. [零基础深度学习环境配置一]基于python 3.7+anaconda 3+cuda 11.1+cuDNN v8.1.1+win10+TITAN XP
  15. 哪个ppt模板网站好
  16. 04 vue3 scss 组件component kepp-alive缓存子组件 nextTick
  17. 数据质量监控Griffin——使用
  18. 谈谈SPI (Serial Peripheral Interface,串行外设接口)
  19. SpringBoot Service 同名异常(conflicts with existing, non-compatible bean definition of same name)
  20. Ecplse常用快捷键

热门文章

  1. linux 常用命令系列—cp 复制文件与文件夹
  2. 工具-Sublime Text:便捷设置 小三角
  3. AC日记——独木桥 洛谷 p1007
  4. 深搜(DFS),Image Perimeters
  5. 通过DMVS采集并存储SQL Server性能计数器数据
  6. 桌面云计算: 提供灵活、可靠双保险
  7. Vmware Update Manager安装错误,错误代码:25085
  8. PKM2数据导出的xml显示用的XSL
  9. 统计无符号整数二进制中 1 的个数(Hamming Weight)
  10. Python入门基础学习记录(二)汇率案例学习记录