概述
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 ##Nginx 安装与普通演示 pcre-8.35.tar.gz nginx-1.6.2.tar.gz
>
#=================环境安装
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
#=================pcre 安装
tar zxvf pcre-8.35.tar.gz
./configure
make && make install
pcre-config --prefix
#=================nginx 安装
tar zxvf nginx-1.6.2.tar
../configure --prefix=/root/svr/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make && make install
cd /root/svr/nginx
./sbin/nginx -t
#===========模块添加
wget http://wiki.nginx.org/images/7/78/Nginx_upstream_hash-0.3.tar.gz
可能出现的错误
error while loading shared libraries: libpcre.so.1
解决办法:添加软链接
ln -s /usr/local/lib/libpcre.so.1 /lib64
##负载均衡基础 搭建演示环境,两个WEB服务 配置 upstream 配置 proxy_pass 演示负载均衡 • upstream 与 location 参数与案例讲解
upstream 参数
描述
service 反向服务地址 加端口
weight 权重
max_fails 失败多少次 认为主机已挂掉则,踢出
fail_timeout 踢出后重新探测时间
backup 备用服务
max_conns 允许最大连接数
slow_start 当节点恢复,不立即加入
负载均衡算法
ll+weight 默认的负载算法:
ip_hash : 基于Hash 计算 应用场景:保持session 一至性 url_hash: (第三方) 应用场景:静态资源缓存,节约存储,加快速度 least_conn 最少链接
least_time 最小的响应时间,计算节点平均响应时间,然后取响应最快的那个,分配更高权重。
location 相关参数 root index proxy_set_header proxy_pass
动静分离实现
Nginx 实现高速缓存
基于Nginx 静态缓存的解决方案:
该方案Nginx 配置实现
一、 在http元素下添加缓存区声明。
proxy_cache_path /data/nginx/cache_item levels=1:1:2 keys_zone=cache_item:500m inactive=30d max_size=10g;
二、为指定location 设定缓存策略。
proxy_cache cache_item; proxy_cache_key $host$uri$is_args$args; #以全路径md5值做做为Key proxy_cache_valid 200 304 12h; #对不同的HTTP状态码设置不同的缓存时间 expires 7d; #总体缓存时间 演示缓存生效过程 配置声明缓存路径 为location 配置缓存策略 重启nginx(修改了) 查看缓存目录生成 缓存参数详细说明 父元素 名称 描述 http proxy_cache_path 指定缓存区的根路径 levels 缓存目录层级最高三层,每层1~2 个字符表示。如1:1:2 表示三层。 keys_zone 缓存块名称 及内存块大小。 如 cache_item:500m 。表示声明一 个名为cache_item 大小为 500m。超出大小后最早的数据将 会被清除。 inactive 最长闲置时间 如:10d 如果一个数 据被闲置10天将会被清除 max_size 缓存区硬盘最大值。超出闲置数据 将会被清除 location proxy_cache 指定缓存区,对应keys_zone 中 设置的值 proxy_cache_key 通过参数拼装缓存key 如: $host$uri$is_args$args 则会以全路径md5值做做为Key proxy_cache_valid 为不同的状态码设置缓存有效期
缓存的清除:
- 该功能可以采用第三方模块 ngx_cache_purge 实现。 为nginx 添加 ngx_cache_purge 模块 #下载ngx_cache_purge 模块包 ,这⾥nginx 版本为1.6.2 purge 对应2.0版 w get http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz
#查看已安装模块
./sbin/nginx -V
#进⼊nginx安装包⽬录 重新安装 --add-module为模块解压的全路径
./configure --prefix=/root/svr/nginx --with-http_stub_status_module --with-http_ssl_module -add-module=/root/svr/nginx/models/ngx_cache_purge-2.0
#重新编译
make
#拷⻉ 安装⽬录/objs/nginx ⽂件⽤于替换原nginx ⽂件
#检测查看安装是否成功
nginx -t
清除配置:
location ~ /purge(/.*) {
#允许访问的IP allow 127.0.0.1;
allow 192.168.0.193;
#禁⽌访问的IP deny all;
#配置清除指定缓存区和路径(与proxy_cache_key⼀⾄)
proxy_cache_purge cache_item $host$1$is_args$args;
}
Nginx 实现防盗链
- 什么是图片防盗链?意思是指本站内图片、CSS等资源只有本站点可以访问,不允许其它站点打开! 该功能如果用JAVA如何实现?很单简单,只要判断一下 请求头当中的referer 属性是否为 指定域名即可。 Nginx原理类似。
配置
防盗链配置: location ~* \.(gif|png|jpg|swf|flv)$ {
root html;
valid_referers none *.tl.com;
if ($invalid_referer) {
rewrite ^/ http://www.tl.com/image/403.png;
#return 404;
}
}
- 演示防盗链配置: 说明:如果 valid_referers 条件判断未通过,nginx 则会赋值 invalid_referer 为true 语法: valid_referers none | blocked | server_names | string ...; 参数说明: none 不允许 “Referer” 来源头部为空的情况 blocked 不允许“Referer”值为空情况,有可能Referer被的值被代理或者防火墙删除 server_names “Referer”来源头部包必须含当前的server_names (当前域名)可以多个
Nginx 实现子域名站点配置
有时会有这样的需求,每个子域名对应一个静态站点(类似58到家、有赞商城等)。如果每天增加一个域名 的会相当麻烦。在nginx 当中可直接基于$host 连接到对应目录。具体配置实现如下:
server {
listen 80;
server_name *.tl.com;
root /data/www/$host;
access_log logs/$host.access.log;
location / {
index index.html;
}
}