吴光科老师公开课的内容。
Nginx特点是占有内存少,并发能力强。是俄罗斯工程师开发的,最早是用于邮件服务器,由于其性能强大,现在常用作WEB 服务器和 反向代理 服务器。
Nginx由内核+模块组成。内核设计的微小简洁,完成工作很简单,查找配置文件将客户请求映射到一个location(url匹配),而这个location中配置的指令将启用不同的模块去完成相应的工作。
Nginx的模块从结构上可以分成核心模块
核心模块:HTTP模块、EVENT模块和MAIL模块、基础模块、第三方模块。
基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块
第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块
Nginx采用linux的epoll模型,相当于Apache的select模型,效率更高。select选择句柄时,需要遍历所有的句柄。epoll不需要遍历,是事件相应的,效率更高。
用C语言编写,可以基于lua语言二次开发,国内openrestry。
首先需要安装pcre库,安装pcre支持rewrite库,也可以安装源码,安装源码时,指定pcre路径为解压源码的路径,而不是编译后的路径,否则会报错。
yum install vim gcc telnet lrzsz openssl openssl-devel pcre pcre-devel
下载Nginx源码包
wget -c http://nginx.org/download/nginx-1.9.10.tar.gz
创建nginx用户,并且设置为不能登录
useradd -r -s /sbin/nologin nginx
解压,进入解压目录,准备预编译,编译
tar xf nginx-1.9.10.tar.gz
cd nginx-1.9.10
编译,预编译
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install
使用--help查看更多的编译参数。--prefix编译后的目录,--with-http_ssl_module支持https, --with-http_stub_status_module统计访问量。
检查nginx配置文件是否正确,返回OK即正确。
/usr/local/nginx/sbin/nginx -t
启动,检测nginx
/usr/local/nginx/sbin/nginx,使用ps -ef |grep nginx查看是否已有nginx的进程在运行。
nginx -v 查看版本号
nginx -V 查看已有的模块信息,编译新版本的nginx时需要带上原有的参数,否则会丢失已有的功能。
下载tar包,解压,进入指定目录后make就可以,不需要install。
kill -USR2 `cat /usr/local/nginx/nginx.pid`,生成新的pid。
kill -QUIT `cat /usr/local/nginx/nginx.pid.oldbin`,关闭旧的nginx。
/usr/local/nginx/sbin/nginx -s reload,/usr/local/nginx/sbin/nginx -v查看版本号