Atitit.实现反向代理(1)----url rewrite 配置and内容改写 and -绝对路径链接改写 java php
Atitit.实现反向代理(1)----url rewrite 配置and内容改写 and -绝对路径链接改写 java php
3. ---------反向代理rewrite 配置mode_rewrite 1
4. 排除自身(apache_mode_rewrite) 2
4. Abs url 2 /app/http://xxxxxx.jpg 4
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的更多相关文章
- Nginx插件之openresty反向代理和日志滚动配置案例
Nginx插件之openresty反向代理和日志滚动配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.openresty介绍 1>.Nginx介绍 Nginx是一款 ...
- nginx 反向代理及 https 证书配置
nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...
- Nginx反向代理实现负载均衡配置图解
Nginx反向代理实现负载均衡配置图解 [导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. ...
- 一文教您如何通过 Docker 搭建反向代理 Ngnix,并配置 Https SSL 证书
欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注附送 100G 海量学习资源哟!! 个人网站: https://www.exception.site/docker/h ...
- nginx反向代理的nginx.conf配置
下面的配置是nginx.conf的示例 nginx反向代理 就是说把跨域的url通过本地代理的方式,变成同域的请求,如此来解决跨域问题 该配置下 通过http://localhost/html5/路径 ...
- 002-nginx-在 nginx 反向代理中使用域名,配置动态域名解析
一.概述 代理(proxy),即中间人,它代替客户端发送请求给服务器,收到响应后再转给客户端.通常意义上的代理是从用户的角度讲的,用户通过某个代理可以访问多个网站,这个代理是靠近用户的,比如某些公司可 ...
- nginx反向代理负载均衡初次配置
反向代理,我个人理解是通过一台反向代理服务器,把客户端的把有请求按照一定的规则分发给后台的服务器.nginx作反向代理服务器的虚拟机配置如下: upstream itest { #正常情况下应该作如下 ...
- nginx 反向代理实现负载均衡*配置实战
重要点: 1配置反向代理多虚拟主机节点服务器 2经过反向代理后的节点服务器记录用户IP 3与反向代理配置相关的更多参数说明 4根据URL目录地址转发 (1)根据URL中的目录地址实现代理转发(动静分离 ...
- docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https
假设docker已经安装好了,如果没有安装,可以照着 5分钟安装docker教程. 一. 下载镜像 默认下载最新版本,如果想指定对应版本,可以用冒号后加版本,像这样mysql:5.7: docker ...
随机推荐
- CSS3样式问题
empty-cells 属性设置是否显示表格中的空单元格 tr:nth-child(even)偶数行的表格 li:nth-child(20)指定位置 2016-09-2813:23:45
- spilt()的用法
split() 方法用于把一个字符串分割成字符串数组.<script type="text/javascript"> var str="How are you ...
- goto
-------siwuxie095 goto 无条件跳转命令 语法: GOTO label label 指定批处理程序中用作标签的字符串 标签必须单独一行,且以冒号开头.即 goto 和 : 分不 ...
- POJ 3352-Road Construction (图论-双边联通分支算法)
题目大意:一个图,要求你加入最少的边,使得最后得到的图为一个边双连通分支.所谓的边双连通分支,即不存在桥的连通分支(题目保证数据中任意两点都联通). 解题思路:先用tarjan算法进行缩点建立DAG图 ...
- textarea 怎么固定大小,不让调整
1:彻底禁用拖动(推荐) resize: none; 2:只是固定大小,右下角的拖动图标仍在 width: 200px; height: 100px; max-width: 200px; max-he ...
- Java中XML格式的字符串4读取方式的简单比较
Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...
- Spring IOC容器中注入bean
一.基于schema格式的注入 1.基本的注入方式 (属性注入方式) 根据setXxx()方法进行依赖注入,Spring只会检查是否有setter方法,是否有对应的属性不做要求 <bean id ...
- 【教程】手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程
[前提] 想要实现使用某种语言,比如Python,C#等,去实现模拟登陆网站的话,首先要做的事情就是使用某种工具,去分析本身使用浏览器去登陆网页的时候,其内部的执行过程,内部逻辑. 此登陆的逻辑过程, ...
- springMVC验证码程序
原文地址:http://my.oschina.net/u/1757031/blog/488322 import java.awt.Color; import java.awt.Font; import ...
- fastjson生成和解析json数据,序列化和反序列化数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...