目录

Nginx+ngx_cache_purge搭建cdn服务器


一、安装相关依赖

1 、Nginx是一个由C语言编写的,所以需要一个编译工具如GNU的GCC

  yum install -y gcc

2、Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法

  yum install -y pcre 
  yum install -y pcre-devel

3、Nginx的各种模块中需要使用gzip压缩

  yum install zlib zlib-devel     

4、OpenSSL提供安全网页,使用SSL/TLS安全套接字

  yum install -y openssl 
  yum install -y openssl-devel            

二、下载ngx_cache_purge模块

1、进入软件存放你目录

  cd /usr/local/src 

2 、下载需安装的模块

  wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz      
  tar zxvf ngx_cache_purge-2.3.tar.gz
  
 wget http://nginx.org/download/nginx-1.10.1.tar.gz
  tar zxvf nginx-1.10.1.tar.gz

三、编译安装nginx

1、进入nginx解压目录

 cd nginx-1.10.1

2、执行./configure

   ./configure --user=nginx --group=www --add-module=../ngx_cache_purge-2.3 --prefix=/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre 

3、编译安装

   make && make install
  • 编译参数详解
参数名 描述 默认值
–prefix=PATH 指定nginx的安装目录。 默认 /usr/local/nginx
–conf-path=PATH 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。 默认为prefix/conf/nginx.conf
–user=name 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。 默认的用户名是nobody。
–group=name 类似
–with-pcre 设置PCRE库的源码路径,如果已通过yum方式安装,使用–with-pcre自动找到库文件。使用–with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(版本4.4 - 8.30)并解压,剩下的就交给Nginx的./configure和make来完成。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。
–with-zlib=PATH 指定 zlib(版本1.1.3 - 1.2.5)的源码解压目录。 在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。
–with-http_ssl_module 使用https协议模块。 默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
–with-http_stub_status_module 用来监控 Nginx 的当前状态
–with-http_realip_module 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址
–add-module=PATH 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)

4、在同一分区下创建两个缓存目录,分别供proxy_temp_path , proxy_cache_path指令设置缓存路径. 注意:两个指定设置的缓存路径必须为同一磁盘分区,不能跨分区.

  mkdir -p /usr/local/nginx/proxy_temp_path
  mkdir -p /usr/local/nginx/proxy_cache_path

5、修改配置文件nginx.conf

  user  nginx;
  worker_processes 1;
  error_log  /usr/local/nginx/logs/error.log warn;
  pid        /usr/local/nginx/logs/nginx.pid;

  events {
    use epoll;
    worker_connections 1024;
  }
  http {

    include       /usr/local/nginx/conf/mime.types;
    default_type  application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /usr/local/nginx/logs/host.access.log main;
    access_log /usr/local/nginx/logs/host.access.404.log main;
    sendfile on;
    keepalive_timeout 65;
    tcp_nodelay on;

    client_header_buffer_size 128k;
    large_client_header_buffers 4 128k;

     #设置Web缓存区名称为cache_one,内存缓存空间大小为200M,缓存的数据超过10天没有被访问就自动清除;访问的缓存数据,硬盘缓存空间大小为6G
     proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=10d max_size=6g;

      proxy_temp_path /usr/local/nginx/proxy_temp_path;

      fastcgi_connect_timeout 3000; 
      fastcgi_send_timeout 3000;
      fastcgi_read_timeout 3000;
      fastcgi_buffer_size 256k;
      fastcgi_buffers 8 256k;
      fastcgi_busy_buffers_size 256k;
      fastcgi_temp_file_write_size 256k;
      fastcgi_intercept_errors on;
     client_header_timeout 600s;
     client_body_timeout 600s;
     client_body_buffer_size 256k;

    gzip on;
    gzip_disable "MSIE [1-6].";

    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_types text/plain application/javascript text/css text/javascript image/jpeg  image/jpg image/png application/json;

    include vhosts/bloghost.conf;

  }

6、打开linux 65535文件限制

  ulimit -n 65535

7、创建vhost目录,用于存放具体请求代理配置文件

  mkdir /usr/local/nginx/conf/vhosts
   vim /usr/local/nginx/conf/vhosts/bloghost.conf