lnmp+substitutions4nginx反代+整站替换

其他技术 站长 浏览 评论

1、安装lnmp
2、下载substitutions4nginx模块,这个模块用于替换。

/root/lnmp stop #停止LNMP服务
cd /root
wget -c http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz
tar -zxf Nginx-accesskey-2.0.3.tar.gz
svn checkout http://substitutions4nginx.googlecode.com/svn/trunk/ substitutions4nginx-read-only
#若出错先执行apt-get install subversion subversion-tools

2、编辑军哥LNMP的upgrade_nginx.sh
vi /root/lnmp0.9/upgrade_nginx.sh
#移动第86行,在最后加入
–with-http_sub_module –add-module=/root/substitutions4nginx-read-only
#即变成

./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-ipv6 –with-http_sub_module –add-module=/root/substitutions4nginx-read-only

3、升级并重新编译nginx
/root/lnmp0.9/upgrade_nginx.sh
#会提示Current Nginx Version:1.x.x
#输入升级版本号的时候填1.2.5即可
###如果编译完后,nginx不能重启,就再编译一次吧o(╯□╰)o
4、设置缓存

mkdir -p /data/cache/path #新建2个目录,放置缓存文件:
mkdir /data/cache/temp #新建2个目录,放置缓存文件:
chown -R www:www ?/data/cache ?#配置一下权限

修改/usr/local/nginx/conf/nginx.conf的http层,添加以下代码:

client_body_buffer_size ?512k;
proxy_connect_timeout ? ?5;
proxy_read_timeout ? ? ? 60;
proxy_send_timeout ? ? ? 5;
proxy_buffer_size ? ? ? ?16k;
proxy_buffers ? ? ? ? ? ?4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_temp_path ? /data/cache/temp;
proxy_cache_path ?/data/cache/path levels=1:2 keys_zone=cache_one:10m inactive=7d max_size=15g;
#10m是内存占用,7d是7天无访问删除,15g是缓存占具硬盘空间
#limit_zone ?crawler ?$binary_remote_addr ?10m; #这段是用于限制单ip连接数的,如果频繁出现后端负载过大可以尝试去掉#

查看缓存大小

cd /data/cache/
df -sh
#若大小有变化,则说明缓存成功

清空缓存

rm -rf /data/cache/path ?#立即清空缓存

虚拟主机配置

server
{
listen ? ? ? ? ?80;
server_name ? ? yy.leiyanhui.com; #主机名
location / {
proxy_cache cache_one;
proxy_cache_valid ?200 304 3d; #正常状态缓存时间3天,按实际情况修改
proxy_cache_key $host$uri$is_args$args;
proxy_pass ? ? ? ? ?http://www.baidu.com/; #反代的网站
proxy_redirect ? ? ?off;
proxy_set_header ? ?X-Real-IP ? ? ? $remote_addr;
proxy_set_header ? ?X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding “”; #清除编码 防止GZIP的站无法替换
expires 10d; #默认10天缓存
access_log ?off;
#limit_conn one 20;
#limit_rate 200k;
#20为单ip连接数,200k为单ip连接速度,若要开启请去掉#
subs_filter www.hostloc.com mjj.baidu.wf; ?#替换掉域名
subs_filter ‘美国’ ‘米国’; ?#如果替换字符是中文,本文件必须是utf-8
}
}
##替换掉全部的<noscript></noscript>
subs_filter ‘<(noscript.*?)>[sS]*?<(/noscript.*?)>’ ” gi;
##替换掉全部的<script>包换中间换行</script>
subs_filter ‘<(script.*?)>[sS]*?<(/script.*?)>’ ” gi;
##替换<iframe></iframe>
subs_filter ‘<(iframe.*?)>[sS]*?<(/iframe.*?)>’ ” gi;
==========================
实际测试中sub_filter比subs_filter的速度要快,但如果你开启了nginx的cache速度上可以得到改善的。
测试过程发现对gzip源的内容无法实现替换的问题
可以在server段内加入 proxy_set_header Accept-Encoding “”;
如果是替换中文词组则需要将nginx的配置文件保存为utf-8格式!

转载请注明:网页阁吧 » lnmp+substitutions4nginx反代+整站替换