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