1.Nginx简介
Nginx和Apache类似,采用的模块化设计,Nginx的模块分为内置模块和第三方模块。比如常见的模块有Core模块、FastCGI模块、Upstream模块、Log模块、Rewrite模块等等。
在编译安装Nginx时,可以使用./configure --with**来开启某个模块。然而,Nginx在编译时会有一些模块编译安装的模块,我们可以使用./configure --without** 来禁用某个模块。
2.nginx的进程模型
nginx有两类进程,一类称为master进程(相当于管理进程),另一类称为worker进程(实际工作进程)。启动方式有两种:
(1)单进程启动:此时系统中仅有一个进程,该进程既充当master进程的角色,也充当worker进程的角色。
(2)多进程启动:此时系统有且仅有一个master进程,至少有一个worker进程工作。master进程主要进行一些全局性的初始化工作和管理worker的工作;事件处理是在worker中进行的。
3.Nginx的配置文件
Nginx的配置文件分为如下几个部分:
(1)全局配置
这是一些nginx的全局配置,例如user、worker_processes等配置。
(2)event配置
event主要用来定义Nginx的工作模块。
(3)http配置
http配置主要是提供一些web功能。例如http中包括了server配置,而server就是用来设置虚拟主机的,可以为Nginx配置多个server。
Nginx的主配置文件的大致结构如下:
#设置用户组 usernobody; #启动子进程数 worker_processes2; ...... events { #每个进程可以处理的连接数,受系统文件句柄的限制 worker_connections 1024; …… } http { #mine.types为文件类型定义文件 include mine.types; #是否采取压缩功能,将页面压缩后传输更节省流量 gzip on; #使用sever定义虚拟主机 server { #服务器监听的端口 listen 80; #对URL进行匹配 location / { …… } } #使用sever定义其他虚拟主机 server { #服务器监听的端口 listen 80; #对URL进行匹配 location / { …… } } }
4.Nginx安装
(1)在pcre官网上下载pcre-8.38的PCRE,并解压,不用安装啊,nginx使用--with-pcre=path可以静态编译pcre
(2)在nginx官网上下载nginx-1.9.15版本的nginx,并解压,然后
./configure--prefix=/home/local/nginx-1.9.15--with-http_ssl_module --with-http_stub_status_module --with-pcre=/home/src/pcre-8.38/ make && make install
备注:with-pcre选项后接的是pcre解压目录,没有安装的目录。当然也可以先单独地安装pcre工具。
(3)配置nginx
conf/nginx.conf是nginx的主配置文件,我们可以在这个下面进行一些个性化的配置。
(4)启动Nginx
cd${NGINX_HOME}/ && sbin/nginx来启动nginx
备注:
sbin/nginx 直接启动nginx
sbin/nginx-c filename 指定nginx启动时加载的配置文件,默认是conf/nginx.conf
sbin/nginx -s signal 向nginx的master进程发送一个信号,信号有stop(关闭主进程)、quit(优雅的关闭nginx,保持现有的客户端连接,处理完后,退出nginx进程)、reopen、reload(触发nginx重新加载配置)
(5)测试
在浏览器输入:http://hz01-cm-bsidx00.hz01.baidu.com:8099/
5.PHP+Nginx环境安装与配置
这里使用的PHP+Nginx的方案是,Nginx通过FastCGI协议连接php的FastCGI进程管理器(这里用到的php FastCGI管理是PHP字典的PHP-FPM),值得注意的是,Nginx不支持CGI协议。具体配置过程如下:
(1)安装php,编译参数如下:
./configure --prefix=/home/local/php --enable-fpm #注意不要加上--with-apxs2
经过编译安装之后,php-fpm的bin文件在/home/local/php/sbin/php-fpm,配置文件在/home/local/php/etc/php-fpm.conf和被包含配置文件/home/local/php/etc/php-fpm.d/www.conf。注意php-fpm.conf和php-fpm.d/www.conf都是由默认的*.conf.default重命名过来的。
(2)配置php-fpm并启动php-fpm
在www.conf配置了php-fpm绑定的ip和port等信息,我们可以对这些信息进行定制化。然后cd /home/local/php/ && sbin/php-fpm来启动php-fpm服务器。此后php-fpm开始监听指定的端口,等待web服务器的连接请求。
这里配置php-fpm的监听的端口是本机的9000端口。
(3)安装nginx并配置nginx并启动nginx
安装过程同上,安装完成之后,需要在的server配置中添加如下配置:
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
然后启动nginx
备注:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;这句配置是向FastCGI进程管理器传递一个SCRIPT_FILENAME的参数,参数的值就是浏览器请求的php脚本的路径。当PHP-FPM收到nginx的请求后,就会让php-fpm的php解释器子进程去执行该脚本文件,然后将执行结果返回给Nginx服务器。
(4)编写php FastCGI脚本
在Nginx安装主目录下的html中新建一个test.php,内容如下:
<?php phpinfo(); ?>
(5)测试
在浏览器中输入:http://wahaha-test:8092/test.php(这里假设nginx配置的监听端口是8092)
备注:其实我们可以将phpMyAdmin的目录,直接放到nginx的安装目录下html目录下,然后通过http://wahaha-test:8092/phpMyAdmin/访问。
6.关于nginx日志
access_log和error_log命令,都是在nginx返回请求的时候记录,也就是如果一条浏览器请求,nginx正确处理后,然后就记录到access.log日志文件中;如果nginx处理错误了,那么就记录到error.log错误日志文件中。注意不是nginx接收到请求就记录日志的。
7.关于nginx upstream负载均衡模块
upstream模块,将使nginx跨越单机的限制,完成网络数据的接收、处理和转发。而且upstream可以配置很多远程server,然后有由用户指定的负载均衡算法来进行转发,比如按ip hash,随机等等。