基础
基本的 nginx 体系结构由 master 进程和其 worker 进程组成。master 读取配置文件,并维护 worker 进程,而 worker 则会对请求进行实际处理。
启动nginx,只需输入
[sudo]nginx
[sudo]nginx -s signal
stop–快速关闭
quit–优雅关闭 (等待 worker 线程完成处理)
reload–重载配置文件
reopen–重新打开日志文件
nginx的配置文件
指令–可选项,包含名称和参数,以分号结尾
gzip on;
上下文 – 分块,你可以声明指令 – 类似于编程语言中的作用域
worker_processes 2; # 全局上下文指令
http { # http 上下文
gzip on; # http 上下文中的指令
server { # server 上下文
listen 80; # server 上下文中的指令
}
}
指令类型
行动指令
行动是改变事情的指令。根据模块的需要,它继承的行为可能会有所不同。
例如 rewrite 指令,只要是匹配的都会执行
return 指令提供的是不同的行为
Nginx 将会按照下列顺序选择虚拟主机:
匹配sever_name指令的IP-端口主机
拥有default_server标记的IP-端口主机
首先定义的IP-端口主机
如果没有匹配,拒绝连接。
root 指令:root 指令设置请求的根目录,允许 nginx 将传入请求映射到文件系统。
server {
listen 80;
server_name netguru.co;
root /var/www/netguru.co;
}
Nginx提供了一些修饰符,可用于连接 location。这些修饰符将影响 location 模块使用的地方,因为每个修饰符都分配了优先级。
= - Exact match
^~ - Preferential match
~ && ~* - Regex match
no modifier - Prefix match
Nginx 会先检查精确匹配。如果找不到,我们会找优先级最高的。如果这个匹配依然失败,正则表达式匹配将按照出现的顺序进行测试。至少,最后一个前缀匹配将被使用。
工作进程、连接数
worker_processes auto; #工作进程数量,默认是1,最安全的设置是auto
worker_connections 1024; #与worker_processes直接绑定。它指定一个工作进程可以一次打开多少个连接。worker_rlimit_nofile 2048; #linux系统改变系统最大打开文件数
最大连接数
最大连接数=worker_processes*worker_connections/(keep_alive_timeout+avg_response_time)*2
#keep_alive_timeout+avg_response_time:表示单个连接持续了多久
gzip
gzip 启动后响应更快,有不同的压缩级别从1-9,一般选择3-5,0代表未压缩gzip_http_version 1.1; #nginx仅在HTTP1.1以上的版本才使用gzip。
缓存
add_header Cache-Control public; #HTTP1.1中使用Cache-Control管理缓存
add_header Pragma public; #Pragma对于HTTP1.0客户端的向后兼容
超时
client_body_timeout 12; #client_body_timeout 和 client_header_timeout 定义了 nginx 在抛出 408(请求超时)错误之前应该等待客户端传输主体或头信息的时间。
client_header_timeout 12;
send_timeout 10; #设置向客户端发送响应的超时时间,超时仅在两次连续的写入操作之间被设置