这篇指南主要是对nignx及其所能完成的任务做个简单的介绍,假设你已经安装了nignx,如果还没安装,可以参考安装nginx
nginx有一个主进程和若干个工作者进程。主进程的主要功能是读配置文件并管理各个工作者进程。实际处理请求的是工作者进程。nginx基于事件并利用操作系统的相关机制有效的分配请求给工作者处理。工作者过程的数量可以在配置文件中设置,可以设置为固定数量,也可以根据CPU的核心数量自动设置一个适合的工作者进程数。
nginx和它的模块按照配置文件中的设置运作。默认情况下,配置文件名为nginx.conf,并且被放在目录/usr/local/nginx/conf、/etc/nginx或者/usr/local/etc/nginx下面。
启动、停止以及重新载入配置¶
直接运行nginx文件,可以启动nginx,nginx启动以后就可以使用以下命令形式来控制它:
nginx -s signal
其中,signal可以是下面的一个值:
- stop - 快速停止
- quit - 优雅的停止
- reload - 重新载入配置文件
- reopen - 重新打开日志文件
例如,要等工作者线程完成当前请求后停止nginx运行,使用:
nginx -s quit
对配置文件的更改想要生效的方法是:重新载入配置文件或者重新启动nginx。重新载入配置文件使用:
nginx -s reload
主进程会重新读取配置文件内容并检验语法是否有效,并尝试应用更改后的配置。
如果应用新配置成功,nginx主进程就创建新的工作者线程并向老的工作者发出停止信号。如果应用新配置失败,依旧使用老的配置。如果老的工作者进程在接到停止信号时正在处理用户请求,它会拒绝接受新的用户请求,并在当前正在处理的请求处理完成之后停止运行。
信号也可以借助unix的命令行工具kill来发送,这种方式会直接发送信号给指定进程ID的进程。nginx主进程的ID被写入/usr/local/nginx/logs或/var/run目录下的文件nginx.pid中。例如,主进程的ID为1628,要发信号使其停止运行,执行下面的指令:
kill -s QUIT 1628
要获取运行着的nginx的全部进程列表,使用ps命令:
ps -ax | grep nginx
更多关于控制nginx的内容,参看控制nginx
配置文件结构¶
nginx通过在配置文件中通过指令来指定各个模块的运作。指令分为简单指令和块指令。
简单指令由空格分隔的名字和参数组成,并以;号结尾。
块指令与简单指令有相同的结构,但它的结尾不是;号,而是一组用{和}包围的其它指令。如果一个块指令在花括号内可以包含其它指令,就被称为环境(例如: events、http、server和location这些指令都被称为环境。
在配置文件中,最外层的指令被放在主环境中,块指令events和http是在主环境中的,server是http环境中,location在server环境中。
以#开头的是注释语句。