日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

使用ATS中的regex_remap插件实现正则匹配的url重定向

發(fā)布時(shí)間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用ATS中的regex_remap插件实现正则匹配的url重定向 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
要點(diǎn)總結(jié)如下:
1.正向和反向代理可以同時(shí)并存,并且remap可以兼容這兩種模式。
2.在使用regex_map時(shí),是借助remap的配置來設(shè)置,而且remap.so和regex_remap.so已經(jīng)事先安裝進(jìn)系統(tǒng)了,啟用remap或是regex_remap功能只需要搞好配置就可以了。
3.使用瀏覽器時(shí),反向代理在地址欄中輸入ATS的ip地址,正向代理時(shí)需要事先設(shè)置瀏覽器使用代理上網(wǎng),但是地址欄的地址不變

一、反向代理模式

remap是ATS做URL rewrite的方式,也是ATS在配置文件設(shè)計(jì)方面的特殊部分。從功能上來講,ATS的remap更像一個(gè)精簡(jiǎn)版本的Apache Httpd的rewrite模塊。remap之所以重要,是因?yàn)樗x了一個(gè)很方便的API入口,我們可以通過remap系統(tǒng),編寫remap插件。

remap.config定義映射規(guī)則,用于請(qǐng)求的重寫(rewrite),反向代理即在此配置。
在remap.config中做如下配置
map http://d1.sina.com.cn http://192.168.90.26 @plugin=regex_remap.so @pparam=maps.reg @pparam=profile @pparam=method

@profile是將打印信息輸入/usr/local/var/log/trafficserver/traffic.out
@method是匹配http方法

動(dòng)態(tài)庫(kù)的默認(rèn)存放路徑/usr/local/libexec/trafficserver/regex_remap.so
注意在默認(rèn)安裝ATS時(shí),它已經(jīng)被安裝到指定的路徑下面了,你可以使用下面的命令驗(yàn)證
locate regex_remap.so
是否可以找到該so文件

config file的默認(rèn)存放路徑是/usr/local/etc/regex_remap/maps.reg(需要事先手動(dòng)創(chuàng)建),它里面存放著我們?cè)O(shè)置的匹配規(guī)則,內(nèi)容如下
^/pfpghc/(.*).swf$ ? http://www.baidu.com/image/in_011.png @status=302

下面是搭建反向代理的方法
在默認(rèn)的ATS配置的基礎(chǔ)上,關(guān)閉host header透?jìng)?#xff0c;修改如下配置項(xiàng)為
CONFIG proxy.config.url_remap.pristine_host_hdr INT 1 改成0

然后在remap.config中做如下配置:
map http://10.10.110.31:8080/ http://news.sina.com.cn/
reverse_map http://news.sina.com.cn/ http://10.10.110.31:8080/

這里map的第一個(gè)http表示是User-Agent去訪問網(wǎng)頁的請(qǐng)求url,第二個(gè)http表示ATS去獲取源的url,整行的意思是,將dns的ip解析為新浪新聞主頁;

這里reverse_map的這一行表示將新浪新聞源站返回的域名轉(zhuǎn)成ip再響應(yīng)給代理用戶


對(duì)一個(gè)正常的如下網(wǎng)址:
http://news.sina.com.cn/s/2014-01-26/150729350128.shtml
使用下面的方式之一訪問反向代理服務(wù)器
http://10.10.110.39:8080/s/2014-01-26/150729350128.shtml(公司)
http://192.168.0.106:8080/s/2014-01-26/150729350128.shtml(家里)

使用下面的方法來使重定向生效。
使用下面的方法使remap.config中的配置值生效,避免重啟機(jī)器
?$ sudo touch /usr/local/etc/trafficserver/remap.config(如果沒有變動(dòng),再更新一下文件創(chuàng)建時(shí)間,如果剛修改文件,不用命令)

?$ sudo traffic_line -x(這個(gè)命令使所有的配置文件重新加載,當(dāng)修改了集群中的某一個(gè)節(jié)點(diǎn)的配置的時(shí)候,Traffic server會(huì)自動(dòng)將更改應(yīng)用到集群的其他節(jié)點(diǎn)。


通常的請(qǐng)求
http://d9.sina.com.cn/pfpghc/3106401f1783439d90720d6a2ead52bc.swf
變?yōu)槿缦抡?qǐng)求
http://192.168.0.106:8080/pfpghc/3106401f1783439d90720d6a2ead52bc.swf
最終重定向到指定的圖片地址
http://www.baidu.com/image/in_011.png

打開任意一個(gè)瀏覽器,在地址欄中輸入上面的請(qǐng)求,可以看到swf變?yōu)橐粋€(gè)圖片的請(qǐng)求了

二、正向和反向代理同時(shí)共存
最終我得到的結(jié)論是,對(duì)廣告必須使用正向代理加上remap方法。因?yàn)槟惚仨毚_保一個(gè)網(wǎng)站所有的鏈接都經(jīng)過ATS代理,如果這樣的設(shè)置
map http://10.10.110.31:8080/ http://news.sina.com.cn/
只能定向news.sina.com.cn這個(gè)域名,對(duì)d9.sina.com.cn這樣的域名沒有辦法。所以,這里我只希望對(duì)極個(gè)別鏈接做重定向。
如何在正向代理的同時(shí)做remap替換?
下面是我的實(shí)現(xiàn)方法:使用正向代理+remap正則匹配重定向,主要是配置。
在默認(rèn)安裝ATS的records.config中修改如下選項(xiàng)
CONFIG proxy.config.url_remap.pristine_host_hdr INT 1 改成0
CONFIG proxy.config.url_remap.remap_required INT 1 改成0,代表同時(shí)開啟正向代理和反向代理

下面配置remap.conf,我的主要目的是借助remap實(shí)現(xiàn)regex_remap的功能,來實(shí)現(xiàn)對(duì)特定url的重定向或是改寫
在remap.conf加入如下內(nèi)容
map http://d1.sina.com.cn/ http://d1.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
map http://d2.sina.com.cn/ http://d2.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
map http://d3.sina.com.cn/ http://d3.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
map http://d4.sina.com.cn/ http://d4.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
map http://d5.sina.com.cn/ http://d5.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
map http://d6.sina.com.cn/ http://d6.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
map http://d7.sina.com.cn/ http://d7.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
map http://d8.sina.com.cn/ http://d8.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
map http://d9.sina.com.cn/ http://d9.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile?

接著在regs.map中加入如下匹配規(guī)則
^/(.*).swf$ http://www.baidu.com/image/in_011.png @status=302?
這里status表示使用302重定向
重啟服務(wù)器

選擇一個(gè)瀏覽器,比如firefox,設(shè)置正向代理為該ATS的ip和端口,這里是192.168.0.106:8080
然后輸入目的網(wǎng)站,比如我要測(cè)試的news.sina.com.cn,就可以看到我要的重定向的結(jié)果了。

三、對(duì)remap和regex_remap規(guī)則的說明
map http://d9.sina.com.cn/ http://d9.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile
表示將客戶端User-Agent發(fā)送的host域以同樣的方式發(fā)送給源站Original Sever(簡(jiǎn)作OS),但是對(duì)path和query部分做正則匹配,匹配的規(guī)則是
^/(.*).swf$ http://www.baidu.com/image/in_011.png @status=302?
也就是將以http://d9.sina.com.cn/開頭,以.swf尾結(jié)尾的url映射到你指定的后一個(gè)地址,這里是http://www.baidu.com/image/in_011.png,并以302的http status顯示。當(dāng)然,你可以映射到其它的地址,結(jié)合這個(gè)匹配規(guī)則。


下面摘自趙永明在CU上的帖子(鏈接見參考網(wǎng)址1):

regex_remap是從master上port過來的, 用來解決去問號(hào), 以及其他變態(tài)的rewrite規(guī)則等, 簡(jiǎn)單說明如下:
如我們希望忽略cdn.zymlinux.net上的?后面的query, 我們只要配置remap.config
配置如下:
map http://cdn.zymlinux.net/ http://zymlinux.net/ @plugin=regex_remap.so @pparam=/tmp/regex_remap.config

并把regex_remap.config配置為:
.* http://source.zymlinux.net/$P

其中$P是URL中的path, 后面不跟query
當(dāng)然, 這里前面的".*"是可以再進(jìn)一步細(xì)化的, 以達(dá)成精細(xì)控制的目的. 而這個(gè)配置是可以給每個(gè)remap規(guī)則配置一個(gè)不同的配置文件, 極大的了增強(qiáng)了大家掌控的便利性.

這里面 cdn.zymlinux.net和zymlinux.net分別是什么?regex_remap.config里的source.zymlinux.net又是什么呢?
我們需要搞清楚這個(gè)關(guān)系,就是
cdn.zymlinux.net ? ? ? ?是用戶在瀏覽器地址欄中輸入的host部分,也稱域名
zymlinux.net ? ? 是ATS對(duì)上url重寫后的url的host部分,比如重寫的url是http://zymlinux.net/img/a.png?size=230*450
source.zymlinux.net ? ?是上面重寫url重定向后的url的host部分,比如重定向url是http://source.zymlinux.net/$P,這里做了正則匹配,那么就是http://source.zymlinux.net/img/a.png

更詳細(xì)的說明, 請(qǐng)參照:
https://git-wip-us.apache.org/re ... emap/README;hb=HEAD

四、remap.config配置文件的說明(部分翻譯)

使用remap.config允許你完成兩件事情:

1)在發(fā)送給源服務(wù)器(Origin Server)之前,重寫客戶端發(fā)送的URL,

2)保護(hù)你的代理服務(wù)器,只允許某些請(qǐng)求通過

使用ATS默認(rèn)的配置文件,至少要求配置一個(gè)remap規(guī)則,但是,這可以通過修改records.config中的下面的配置選項(xiàng)放松條件:

CONFIG proxy.config.url_remap.remap_required INT 0

支持的6種mapping規(guī)則如下:

map

map_with_referer

map_with_recv_port

reverse_map

redirect

redirect_temporary

這幾種map類型都支持正則表達(dá)式匹配,同時(shí)使用regex_的前綴,但是有一些限制:

1)只有host域支持正則表達(dá)式, scheme,port和其它的field不支持

2)子模式的匹配個(gè)數(shù)只能最大到9,這意味著$0-$9能用于替換占位符,$0表示整個(gè)輸入字符串

3)擴(kuò)展字符串中的替換個(gè)數(shù)限制到10

下面是map支持正則表達(dá)式的一個(gè)例子:

上面的9條規(guī)則可以用下面的一條正則匹配表示:

regex_map http://d([1-9]).sina.com.cn/ http://d$1.sina.com.cn/ @plugin=regex_remap.so @pparam=maps.reg @pparam=profile

這里http://d([1-9]).sina.com.cn/可以表示上面的9個(gè)域名,$1表示匹配到的1-9中的某個(gè)數(shù)字


參考網(wǎng)址
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3758890
http://bbs.chinaunix.net/thread-3768941-1-1.html

總結(jié)

以上是生活随笔為你收集整理的使用ATS中的regex_remap插件实现正则匹配的url重定向的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。