介绍
nginx有一个master进程和若干worker进程。worker进程的数量在配置文件中定义,可固定值也可根据cpu核心数来自动调整。
- master进程:读取/评估配置、分发请求、管理worker进程
- worker进程:处理请求
- 配置文件位置: /usr/local/nginx/conf、 /etc/nginx、 /usr/local/etc/nginx
信号
nginx -s 信号,其中信号可选值与意义如下:
| 信号 | 意义 |
|---|---|
| stop | 快速退出 |
| quit | 安全退出 |
| reload | 重载配置文件 |
| reopen | 重新打开日志文件 |
注:
- 官方文档中说quit信号会处理完当前请求后在安全退出,stop信号并未提及,可能是直接关闭。
- 要以启动nginx的用户执行quit信号。
reload信号会先检查配置文件合法性,如果配置无误会开启新的worker进程接收新到的请求,并发信号给老的worker进程,老的worker进程处理完当前的请求后会自动安全退出。
也可以使用kill命令,如kill -s QUIT 1628(1628为master进程号),另一个常用的kill -HUP 1628效果同reload信号。
配置文件的结构
配置文件由指令(simple directive)和指令块(block directive)组成,指令由;结束,指令块由{}组成,指令块可嵌套。不在指令块中的指令为主上下文(main context)。
以#开头的行是注释。
如event和http指令块在主上下面中,server指令块在http指令块中,location指令块在server指令块中。
为静态页面提供服务
http {
server {
location / {
root /data/wwww;
}
location /images/ {
root /data;
}
}
}
以*/images/开头的请求会加上/data形成本地的路径( /data/images/*)来获取资源,其他请求会直接到/data/www/目录下获取。
root指令的意思是指在完整的url前加上参数,形成本地的资源路径。location匹配规则:最早正则匹配>其他正则匹配>最长准确匹配>其他准确匹配
简单的代理服务器
server {
listen 8080;
root /data/up1;
location / {
}
}
监听8080端口,过来的所有请求去/data/up1获取资源。
server {
location / {
proxy_pass http://localhost:8080;
}
location /images/ {
root /data;
}
}
所有以*/images/开头的请求去/data/iamges*下获取资源,其他请求转发到本地的8080端口。
server {
location / {
proxy_pass http://localhost:8080/;
}
location ~ .(gif|jpg|png)$ {
root /data/images;
}
}
以.gif、.jpg、.png结尾的url去*/data/images*下获取资源,其他请求转发到本地的8080端口。
- location指令中用
~表示后面跟随的是正则。
FastCGI代理
server {
location / {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
}
location ~ .(gif|jpg|png)$ {
root /data/images;
}
}
使用fastcgi_pass指令代替proxy_pass来表明使用的是FastCGI,fastcgi_param指令设置传递给FastCGI服务器的参数
以上就是我学习nginx的一些知识,如有不正确的地方还请指正