浏览器缓存系列之二:实战

摘要:小编结合公司的实际情况,是在NGINX上面配置的。

话不多说,直奔正题: 在NGINX上面配置浏览器缓存时,需要额外添加模块,即 ngx_http_headers_module。 由于小编是由于公司需求才接触到NGINX的,所以,一方面是新手,不能在正式环境和测试环境直接搞,以为怕炸锅。另一方面还是害怕炸锅。 于是,公司分配一台服务器把NGINX从头撸了一遍。 首先,就是在linux上面安装NGINX, 当然,这个问题可以百度或者谷爹一下就能解决了,友情提示一下,安装的时候还是有很多的细节需要,小心一不留神安装失败。 其次,就是成功安装NGINX之后就是添加模块,我是新手,反正是各种不懂,网上找到文章也是似懂非懂的。 而且,安装 ngx_http_headers_module的资源只有一条(当你看到我写的这篇文章的时候,已经能够搜索到两条了,哈哈哈),资源是如此的稀少,而且看不懂。


接下来,线划一横线,目的是和上面说的这些废话区分开。 一、先介绍一下NGINX添加模块的一般的方法: 1.下载模块

  1. git clone https://github.com/agentzh/echo-nginx-module

2.放入指定位置

  1. mv echo-nginx-module-master /usr/local/src/nginx-1.8.1/echo-nginx-module

3.查看已编译参数

  1. /usr/local/nginx/sbin/nginx -V 结果为:
  2. --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

4.重新编译

  1. ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/nginx-1.8.1/echo-nginx-module--with-ipv6
  2. make

PS: 这里只需要make,一定不要执行make install,不然会覆盖

5.备份原文件

  1. cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

6.替换nginx二进制文件

  1. cp /usr/local/src/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/nginx

7.检查以及平滑启动nginx

  1. ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx(做软链,添加到环境变量)
  2. ./nginx -t (检测配置文件)[我不知道网上的都是`nginx -t`这样的检测配置文件的命令,而且这样的命令在我这儿并不好使,下同]
  3. ./nginx -s reload (平滑重启)[网上搜索到是这样的命令`nginx -s reload`]

二、详细说一下安装 ngx_http_headers_module模块的具体方式(理论结合实践) 我搜到的网上写的不详细(我感觉),根本不知道下载到那个目录下面。 下面介绍的是NGINX添加模块成功的安装目录 我把需要添加的模块下载到我的NGINX安装目录里面的 src/nginx-1.6.2下面了 1、查看当前nginx版本及确认安装目录 2、版本及目前使用的模块信息

  1. [root@thirdlevel sbin]#/usr/local/nginx/sbin/nginx -V
  2. nginx version: nginx/1.6.2
  3. built by gcc 4.8.520150623(RedHat4.8.5-36)(GCC)
  4. configure arguments:

我的这个 configure arguments里面没有输出任何东西是因为我的NGINX是新安装的,还没有添加其他的新的模块。 3,下载headers模块

  1. cd /usr/local/src/nginx-1.6.2
  2. wget https://codeload.github.com/openresty/headers-more-nginx-module/zip/master
  3. unzip headers-more-nginx-module-master.zip

4,将header模块,编译到nginx中去 执行下面的这行代码是在我下载 headers-more-nginx-module-master.zip所在的目录执行的。 如果你的 configure arguments有内容的话,要把已有的内容也加上。例如:

  1. ./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/application/nginx-1.8.1/--add-module=/home/qiuyuetao/headers-more-nginx-module-master
  2. ###注意一定要事先查看当前nginx下有哪些编译模块,记录,然后与要添加的模块一起编译##
  3. make
  1. ./configure --add-module=/usr/local/src/nginx-1.6.2/headers-more-nginx-module-master
  2. make

5,替换nginx启动文件(这个可以按照上面介绍的一般步骤中的第5/6步来做这步操作)

6,重启服务,测试是否正常

  1. /application/nginx/sbin/nginx -s stop `停服务`
  2. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf `启动NGINX服务`

7,验证效果

  1. [root@thirdlevel sbin]#/usr/local/nginx/sbin/nginx -V
  2. nginx version: nginx/1.6.2
  3. built by gcc 4.8.520150623(RedHat4.8.5-36)(GCC)
  4. configure arguments:--add-module=/usr/local/src/nginx-1.6.2/headers-more-nginx-module-master

configure arguments里面有你刚添加的模块的名字,就是添加成功了

8,添加到nginx 指定站点配置文件中

  1. server{
  2. listen 80;
  3. server_name www.etiantian.org;
  4. location /{##将下面header信息写入location下 ## max-age设定缓存时间 nocashe 就是不缓存
  5. add_header Cache-Controlno-cache;
  6. add_header Cache-Controlno-store;
  7. add_header Pragmano-cache;
  8. add_header Expires0;
  9. }

9,重新加载

  1. /application/nginx/sbin/nginx -s stop `停服务`
  2. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf `启动NGINX服务`

或者

  1. ./nginx -s reload

##web页面查看结果##

摘要:小编结合公司的实际情况,是在NGINX上面配置的。

话不多说,直奔正题: 在NGINX上面配置浏览器缓存时,需要额外添加模块,即 ngx_http_headers_module。 由于小编是由于公司需求才接触到NGINX的,所以,一方面是新手,不能在正式环境和测试环境直接搞,以为怕炸锅。另一方面还是害怕炸锅。 于是,公司分配一台服务器把NGINX从头撸了一遍。 首先,就是在linux上面安装NGINX, 当然,这个问题可以百度或者谷爹一下就能解决了,友情提示一下,安装的时候还是有很多的细节需要,小心一不留神安装失败。 其次,就是成功安装NGINX之后就是添加模块,我是新手,反正是各种不懂,网上找到文章也是似懂非懂的。 而且,安装 ngx_http_headers_module的资源只有一条(当你看到我写的这篇文章的时候,已经能够搜索到两条了,哈哈哈),资源是如此的稀少,而且看不懂。


接下来,线划一横线,目的是和上面说的这些废话区分开。 一、先介绍一下NGINX添加模块的一般的方法: 1.下载模块

  1. git clone https://github.com/agentzh/echo-nginx-module

2.放入指定位置

  1. mv echo-nginx-module-master /usr/local/src/nginx-1.8.1/echo-nginx-module

3.查看已编译参数

  1. /usr/local/nginx/sbin/nginx -V 结果为:
  2. --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

4.重新编译

  1. ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/nginx-1.8.1/echo-nginx-module--with-ipv6
  2. make

PS: 这里只需要make,一定不要执行make install,不然会覆盖

5.备份原文件

  1. cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

6.替换nginx二进制文件

  1. cp /usr/local/src/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/nginx

7.检查以及平滑启动nginx

  1. ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx(做软链,添加到环境变量)
  2. ./nginx -t (检测配置文件)[我不知道网上的都是`nginx -t`这样的检测配置文件的命令,而且这样的命令在我这儿并不好使,下同]
  3. ./nginx -s reload (平滑重启)[网上搜索到是这样的命令`nginx -s reload`]

二、详细说一下安装 ngx_http_headers_module模块的具体方式(理论结合实践) 我搜到的网上写的不详细(我感觉),根本不知道下载到那个目录下面。 下面介绍的是NGINX添加模块成功的安装目录 我把需要添加的模块下载到我的NGINX安装目录里面的 src/nginx-1.6.2下面了 1、查看当前nginx版本及确认安装目录 2、版本及目前使用的模块信息

  1. [root@thirdlevel sbin]#/usr/local/nginx/sbin/nginx -V
  2. nginx version: nginx/1.6.2
  3. built by gcc 4.8.520150623(RedHat4.8.5-36)(GCC)
  4. configure arguments:

我的这个 configure arguments里面没有输出任何东西是因为我的NGINX是新安装的,还没有添加其他的新的模块。 3,下载headers模块

  1. cd /usr/local/src/nginx-1.6.2
  2. wget https://codeload.github.com/openresty/headers-more-nginx-module/zip/master
  3. unzip headers-more-nginx-module-master.zip

4,将header模块,编译到nginx中去 执行下面的这行代码是在我下载 headers-more-nginx-module-master.zip所在的目录执行的。 如果你的 configure arguments有内容的话,要把已有的内容也加上。例如:

  1. ./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/application/nginx-1.8.1/--add-module=/home/qiuyuetao/headers-more-nginx-module-master
  2. ###注意一定要事先查看当前nginx下有哪些编译模块,记录,然后与要添加的模块一起编译##
  3. make
  1. ./configure --add-module=/usr/local/src/nginx-1.6.2/headers-more-nginx-module-master
  2. make

5,替换nginx启动文件(这个可以按照上面介绍的一般步骤中的第5/6步来做这步操作)

6,重启服务,测试是否正常

  1. /application/nginx/sbin/nginx -s stop `停服务`
  2. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf `启动NGINX服务`

7,验证效果

  1. [root@thirdlevel sbin]#/usr/local/nginx/sbin/nginx -V
  2. nginx version: nginx/1.6.2
  3. built by gcc 4.8.520150623(RedHat4.8.5-36)(GCC)
  4. configure arguments:--add-module=/usr/local/src/nginx-1.6.2/headers-more-nginx-module-master

configure arguments里面有你刚添加的模块的名字,就是添加成功了

8,添加到nginx 指定站点配置文件中

  1. server{
  2. listen 80;
  3. server_name www.etiantian.org;
  4. location /{##将下面header信息写入location下 ## max-age设定缓存时间 nocashe 就是不缓存
  5. add_header Cache-Controlno-cache;
  6. add_header Cache-Controlno-store;
  7. add_header Pragmano-cache;
  8. add_header Expires0;
  9. }

9,重新加载

  1. /application/nginx/sbin/nginx -s stop `停服务`
  2. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf `启动NGINX服务`

或者

  1. ./nginx -s reload

##web页面查看结果##

原文地址:https://www.cnblogs.com/myprogramer/p/10310976.html