本文为Nginx入门级简介,包括安装,基本使用,负载均衡,动静分离,反向代理,缓存应用等功能。linux
依赖项准备 可能用到的依赖库,如下提供官方网站连接可自行下载: pcre http://www.pcre.org/nginx
zlib http://zlib.net http://sourceforge.net/projects/libpng/files/zlib/ zlib.net上不去…是否是被墙了,咱们可使用另一个连接zlib是 libpng的依赖库git
openssl http://www.openssl.org/github
注:以上这几个库不用安装,解压便可,编译时会连接到。有的系统已经安装了的就能够忽略。web
本文中用到的插件模块: https://github.com/agentzh/srcache-nginx-module https://github.com/agentzh/memc-nginx-modules正则表达式
安装 虽然nginx已经支持windows好久了,本文仅介绍linux的安装windows
在nginx官方网站下载源码包(http://www.nginx.org/ )并解压。 本文发布时,最新版1.3.0刚发布,建议使用1.2.0。开源的东东老是有一堆的版本,按照国内的盗版思惟,不少人喜欢用最新版,其实最新版不少都不稳定,有各类莫名其妙的BUG,甚至有些都没法编译经过。因此通常推荐使用最新版的上一个版本的稳定版(一般会标识有stable)。后端
执行./configure ./configure --with-pcre=/usr/local/pcre-8.30/ --with-zlib=/usr/local /zlib-1.2.3/ --with-openssl=/usr/local /openssl-1.0.1c/ --prefix=/usr/local/nginx --add-module=/usr/local/agentzh-memc-nginx-module --add-module=/usr/local/agentzh-srcache-nginx-module
参数介绍: --with-pcre=/usr/local/pcre-8.30/ 指向pcre解压路径或者安装的路径缓存
--with-zlib=/usr/local /zlib-1.2.3/ 指向zlib解压路径或者安装的路径服务器
--with-openssl=/usr/local /openssl-1.0.1c/ 指向openssl解压路径或者安装的路径
--prefix=/usr/local/nginx 指定nginx要安装的路径
--add-module=/usr/local/agentzh-memc-nginx-module
--add-module=/usr/local/agentzh-srcache-nginx-module 上面这两个模块主要是用来调用memcached的,详见 缓存章节
编译并安装 make&&make install 测试 安装成功后,在安装后的nginx的路径下执行 sbin/nginx -v 执行后显示nginx的版本信息,就表示安装完成了。 基本使用 参数 -V 显示当前nginx的版本号和编译信息 -v 仅显示当前nginx的版本号 -t 测试配置文件的正确性 -c <配置文件路径> 不使用系统的conf/nginx.conf,而是使用用户指定的配置文件路径
举例: sbin/nginx -V
以上命令执行结果为显示“编译信息”,能够查看用到的自带模块及第三方模块,截至目前nginx已经有很丰富的第三方模块。
sbin/nginx -t -c myconfig.conf
以上命令的做用是测试用户指定的配置文件myconfig.conf 的正确性
信号控制 TERM 强退,无视一切 QUIT 当前请求处理完成后,关闭程序 HUP 从新载入配置文件,用于修改配置文件后。该操做会打开新的工做进程,并关闭旧的 工做进程,而且不会中断当前请求。
在logs\nginx.pid中,记录了当前运行的nginx进程ID, 能够经过 kill -信号名 cat logs/nginx.pid
进行控制。 例如: kill -HUP cat logs/nginx.pid
执行以上命令可从新加载配置文件。
监控 配置: location ~ ^/mystatus/ { stub_status on; access_log off; } 可直接访问http://<xxx>/mystatus/便可显示Nginx的一些运行状态信息。
负载均衡 配置: #netty server服务 upstream nettysrv { server 127.0.0.1:51074 weight=1 max_fails=2 fail_timeout=10s; server 127.0.0.1:14174 weight=1 max_fails=2 fail_timeout=10s; server 127.0.0.1:17917 backup; } 参数说明: weight 权重,数值越大,负载就越大 backup 备份标识
以上配置了三个服务器作负载均衡,51074和14174作权重模式执行。17917做为备份服务,只有前两个服务都失败了,才启用。
动静分离及反向代理 静态访问配置: #静态访问文件夹 location ^~ /static/ { root /home/nginx/webroot/; } 使用root将连接定向到本地路径/home/nginx/webroot下
动态访问配置: #动态的访问个人netty serv location ^~ /dynamic/ { proxy_pass http://nettysrv/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } 使用proxy_pass,定向到前面负载均衡章节定义的服务nettysrv。 proxy_set_header 当后端Web服务器上也配置有多个虚拟主机时,须要用该Header来区分反向代理哪一个主机名。 proxy_set_header 若是后端Web服务器上的程序须要获取用户IP,请从该Header头获取 注:location的能够是正则表达式,对uri进行匹配。可是,使用正则表达式后,只能用rewrite进行重定向uri,而不能使用root和proxy_pass。
缓存 使用自带缓存proxy_cache http下配置: proxy_temp_path proxy_temp_dir;
proxy_cache_path proxy_cache_dir levels=1:2 keys_zone=cache_one:2000m inactive=5m max_size=5m;
location下配置调用缓存: location ^~/proxytest/ { proxy_cache cache_one; proxy_cache_valid any 5m; proxy_pass http://nettysrv/; }
使用插件调用memcached 使用memcached要使用前面提到的第三方插件 agentzh-memc-nginx-module agentzh-srcache-nginx-module
插件的安装,nginx编译时加入—add-module参数便可: --add-module=/usr/local/agentzh-memc-nginx-module --add-module=/usr/local/agentzh-srcache-nginx-module
具体可参考nginx的安装章节。
配置以下: #memcached服务的地址 upstream memcachesrv { server 127.0.0.1:11211; }
#调用memcached的location location ^~/memcachetest { set $key $uri$args; #set_md5 $key; srcache_fetch GET /mcache $key; srcache_store PUT /mcache $key; #more_clear_headers 'Accept-Encoding'; proxy_pass http://nettysrv/; }
#在上面经过srcache进入本location进行缓存操做,若是有缓存数据就使用缓存中的,没有就继续调用,并将数据缓存。 location /mcache { internal; memc_connect_timeout 1000ms; memc_send_timeout 1000ms; memc_read_timeout 1000ms; set $memc_key $query_string; set $memc_exptime 300; memc_pass memcachesrv; } 在^~/memcachetest的配置中把$uri$args传入 /mcache ,mcache用$query_string取出做为memcache的key。
参考 http://www.nginx.org/ http://wiki.nginx.org/Main 本文出自 “跳出三界以外” 博客,请务必保留此出处http://quickmove.blog.51cto.com/5025502/873337