Nginx+ngx_cache_purge搭建cdn服务器
目录
- 更多分享:www.catbro.cn
一、安装相关依赖
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