廖雪峰历时3个月打磨出价值1980的数据分析教程,终终终于免费啦!

文章目录
  1. 1. 一、教程内容
  2. 2. 二、具体操作
    1. 2.1. 引言
    2. 2.2. 配置七牛CDN骚操作
    3. 2.3. 懒人站长如何使用CDN
    4. 2.4.
    5. 2.5. http_substitutions_filter_module配置CDN
  • http://www.bewindoweb.com/112.html

    一、教程内容

    1、七牛CDN的部署

    2、nginx的ngx_http_substitutions_filter_module模块

    二、具体操作

    引言

    本来一开始只想做简单的博客,可以看到到今天为止(2017.11.25)“首页”连一张图片都没有(又想哭穷了,此站为最便宜的1M带宽50G存储……)。后来由于自己需求太多,做了大量有图片的网页,网页的加载速度可想而知,于是开始想用知名已久的免费CDN:七牛云存储,来将图片引流。

    配置七牛CDN骚操作

    1、进入七牛官网。这里介绍一下CDN的策略。众所周知,访问网页觉得慢,肯定不仅仅是这些HTML、JS、CSS代码传给你慢,而是占用带宽的大头,一些图片资源、音视频资源、下载的资源之类,因此就诞生了CDN。CDN会帮你将一些静态资源比如HTML、JS、CSS、图片、音视频、下载文件等等分发到它在各地部署的服务器上,这样你如果想要取这个资源,它会直接就近将资源发给你,这样当然是最快的啦。以前的CDN总是全站拷贝,直接将域名解析到他们的CNAME就可以了,这样的好处是省事,坏处是动态页面会遇到问题。而七牛的存储策略则是自建一个空间,然后将CDN解析到上面去,这样只需要把静态资源如图片放上去就可以了,动态的如PHP仍然通过源站访问。

    2、注册验证个人站长身份(大概1小时)。

    3、单击左侧的对象存储,然后创建一个存储空间,这个空间可以任意命名,以后你的所有文件都会放到这个空间里去。

    4、单击左侧的融合CDN,然后新建一个加速域名

    这里要填写的重要信息:

     名称说明 举例 
     域名类型 选普通域名 
     加速域名 你要添加的二级域名,后缀一定要是你的网站cdn.bewindoweb.cn 
     源站配置 选择你刚才建立的存储空间 

    5、回到对象存储空间概览,右侧的融合CDN加速域名,会发现你的二级域名正在配置中,一会过后会变成等待CNAME,然后点击右边的CNAME图标,就会弹出这样一个域名。

    6、这时候我们需要去自己网站解析地址的地方配置一下二级域名的CNAME,比如我服务器是腾讯云,腾讯云帮我解析的,我就去腾讯云,在云解析管理域名解析里面,添加一条这样的CNAME:

     其中关键信息如下:
     名称说明 举例 
     主机记录 刚才填的二级域名的前缀 比如cdn.xxx.cn就填cdn
     记录类型 填CNAME 
     记录值 填入刚才七牛弹出来的域名 注意填完com后会加个点,不要去改它

    7、等待10-20分钟,七牛会显示成功。

    8、点击镜像存储,绑定你的网站,保存。

    9、内容管理里面,将外链默认域名选为你自己建立的二级域名,七牛CDN就配置好啦。

    懒人站长如何使用CDN

    从这里开始,网上的内容大多都教如何配置wordpress的后台,然后添加CDN功能,直接填个网址完事,这里保留个链接以备不时之需吧。
    可是这个网站是我自己写的啊!我也想能填个网址了事……而且我也不想修改关键的内容,一是考虑到CDN是免费的,万一崩了呢?二是我不想去每个地方改php代码,不然所有的网页都得改一遍,到时候维护起来超级无敌宇宙大麻烦。我想到是用nginx进行的反向代理php-fpm解析的,那在nginx解析的时候,直接把字符串替换过去不就完事啦~果然真的有……

    http_substitutions_filter_module配置CDN

    这里参考的是Nginx内容替换模块http_substitutions_filter_module及实用案例分享,由于没有使用过ngxin自带的subs_filter,所以也不知道这两个的区别利弊,当然直接用最新的好啦。

    1、编译集成ngx_http_substitutions_filter_module

    (1)下载ngx_http_substitutions_filter_module模块文件后解压,

    [root@MyServer ~]# wget -O ngx_http_substitutions_filter_module-master.zip https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.zip
    [root@MyServer ~]# unzip ngx_http_substitutions_filter_module-master.zip
    [root@MyServer ~]# cd ngx_http_substitutions_filter_module-master && pwd
    /root/ngx_http_substitutions_filter_module-master

    (2)服务器上执行nginx -V ���看编译参数

    [root@MyServer ~]# /usr/local/nginx/sbin/nginx  -V
    Tengine version: Tengine/2.1.2 (nginx/1.6.2)
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
    TLS SNI support enabled
    configure arguments: –prefix=/usr/local/nginx –with-http_v2_module –with-http_ssl_module –with-http_gzip_static_module –with-http_realip_module –add-module=../ngx_cache_purge-2.3 –with-http_sub_module

    (3)加上模块参数,重新编译nginx

    ./configure [+原有参数+] –add-module=/root/ngx_http_substitutions_filter_module-master/

    (4)平滑升级nginx

    参考这篇文章,我没有尝试过所以不写。

    这里我在第2步编译的时候卡壳了,我当时是apt-get install nginx安装的nginx……版本是nginx/1.12.1,我的编译参数是:

    –with-cc-opt=’-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2’ –with-ld-opt=’-Wl,-z,relro -Wl,-z,now’ –prefix=/usr/share/nginx –conf-path=/etc/nginx/nginx.conf –http-log-path=/var/log/nginx/access.log –error-log-path=/var/log/nginx/error.log –lock-path=/var/lock/nginx.lock –pid-path=/run/nginx.pid –modules-path=/usr/lib/nginx/modules –http-client-body-temp-path=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-proxy-temp-path=/var/lib/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path=/var/lib/nginx/uwsgi –with-debug –with-pcre-jit –with-http_ssl_module –with-http_stub_status_module –with-http_realip_module –with-http_auth_request_module –with-http_v2_module –with-http_dav_module –with-file-aio –with-threads –with-http_addition_module –with-http_geoip_module=dynamic –with-http_gunzip_module –with-http_gzip_static_module –with-http_image_filter_module=dynamic –with-http_secure_link_module –with-http_sub_module –with-http_xslt_module=dynamic –with-stream=dynamic –with-stream_realip_module –with-stream_geoip_module –with-stream_ssl_module –with-stream_ssl_preread_module –with-mail=dynamic –with-mail_ssl_module –add-dynamic-module=/usr/src/builddir/debian/modules/nginx-auth-pam –add-module=/usr/src/builddir/debian/modules/nginx-dav-ext-module –add-module=/usr/src/builddir/debian/modules/nginx-echo –add-module=/usr/src/builddir/debian/modules/nginx-upstream-fair –add-module=/usr/src/builddir/debian/modules/ngx_http_substitutions_filter_module –add-module=/usr/src/builddir/debian/modules/nginx-cache-purge

    然后按照教程做了后报错:

    ./configure: error: no /usr/src/builddir/debian/modules/nginx-dav-ext-module/config was found

    用which,whereis也找不到这个叫nginx-dav-ext-module的插件,于是乎我开始准备一个一个查找这些–add-module增加的插件是否有用,每想到找着找着找到了这个:

    –add-module=/usr/src/builddir/debian/modules/ngx_http_substitutions_filter_module

    呀,这不是我们要加的插件吗,原来在这个版本已经集成了,那就不用那么麻烦升级了……于是跳过了所有的步骤……进入使用阶段。

    2、配置nginx,替换字符串。

    ngx_http_substitutions_filter_module的github文档

    用法说明:

    * subs_filter_types
    subs_filter_types 语法: subs_filter_types mime-type [mime-types]
    默认: subs_filter_types text/html
    适用: http, server, location
    subs_filter_types 是用来指定替换文件类型的 默认仅仅替换text/html类型的文件。
  • subs_filter
    subs_filter 语法: subs_filter source_str destination_str [gior]
    默认: none
    适用: http,server,location
    subs_filter 是用来替换文本的,可以使用正则
    g(默认):替换匹配项。
    i :区分大小写的匹配
    o : 只匹配发现的第一个。
    r : 正则匹配(默认是字符串匹配)。

    于是在ngxin的xxx.conf下,配置我的cdn:

    subs_filter http://www.bewindoweb.cn/([^"\']*?)\.(jpg|png|js|css|jpeg|bmp|gif) http://cdn.bewindoweb.cn/$1.$2 igr;

    这里注意,我对php进行了php-fpm的配置,所以在location /下配置这一句是无效的,要在location php的下面才有效哦。

    最后的效果:

    图片加载速度快得让人想哭呢……



科学上网(翻墙)教程!

更多精彩内容,请扫描二维码关注公众号:轮子工厂,公众号内回复:

1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;
2.回复【我要造轮子】:获取100多本计算机类经典书籍;
3.回复【开发工具】:获取几大主流编程语言的开发工具~
4.回复【内推】:可帮你内推到大厂工作。
文章目录
  1. 1. 一、教程内容
  2. 2. 二、具体操作
    1. 2.1. 引言
    2. 2.2. 配置七牛CDN骚操作
    3. 2.3. 懒人站长如何使用CDN
    4. 2.4.
    5. 2.5. http_substitutions_filter_module配置CDN