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反代+整站替换