查看rpm
rpm -q --scripts nginx
查看nginx,制定绑定CPU的核心数,具体跑在哪个CPU上面。
watch -n 0.5 'ps axo cmd,pid,psr |grep nginx '
manin:
#user nobody;
只能放manin语句块里
默认是nobody用户,在没有指定用户的时候,默认就是nobody用户
user nginx;
只能放manin语句块里
运行nginx进程用户,最好是系统用户,不要让这个用户有可以登录的权限
worker_processes 1;
只能放manin语句块里
运行woker个数,一般根据自己的CPU来修改,如果你的CPU是四核的这里可以写上3核,单独留一个CPU给系统调用
worker_rlimit_nofile 65535;
只能放manin语句块里
最大端口连
worker_priority
只能放manin语句块里
优先级 制定worker进程的nice值,设定worker进程优先级一般为正19到副20,优先级越高优先级越高
worker_cpu_affinity 1000 0100;
只能放manin语句块里
绑定CPU核心,具体绑定到哪个核心上
use epoll;
只能放manin语句块里
默认模式,无需修改
daemon on|off
只能放manin语句块里
是否以守护进程运行,也就是前台执行还是后台执行,前台执行显示显示执行,后台执行不影响其他操作默认是on,如果是测试开发环境可以用前台模式运行,方便修改
events模块:事件驱动
worker_connections 15000;
events下使用
每个worker进程所能够打开的最大并发数量,如10240
accept_mutex on|off
events下使用
处理新的链接请求方式,on指由各个worker轮流处理新请求,off指每个新请求的到达都会通知(唤醒worker进程),但是只有一个进程可获得链接,造成 “惊群” 影响性能可以在events下载使用
http模块:
/application/nginx-1.16.1/logs/nginx.pid
nginx运行的进程ID号,PID会随机生成一个ID号
server段:
ssl
限制仅能够通过ssl连接提供服务
backlpg=number
超过并发连接数后,新请求进入后援队列的长度,也就是请求满了,让后面的连接等待
rcvbuf=size
接收缓冲区大小
sndbuf=size
发送缓冲区大小
keepalive_timeout timeout 75s;
可用段:http,server,location
设定保持连接超时时常,0表示禁止长链接,默认为75s秒
可用telnet测试
例子:
telnet 10.0.0.7
GET /index.html HTTP/1.1
HOST:www.b.com
再次访问
GET /index.html HTTP/1.1
HOST:www.b.com
keepalive_requests numaber;
在一次长链接上所允许请求的资源的最大数量默认为100
keepalive_disable none|browser;
对那种浏览器禁用长链接
send_timeout time;
向客户端发送响应报文的超时时长,此处是指两次写操作之间的间隔时长,而非整个响应的传输市场
client_body_buffer_size size;
用户接受每个客户端请求包文件的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由下面的client_body_teme_path指令所定义的位置
当用户上传的文件超过16k时,单独用一个目录作为临时存储目录
clie_body_temp_path path [level1 [level2 [level3]]] ;
设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量
目录名为16进制数字;
例子:
client——body_temp_path /var/tmp/client_body 1 2 2
1 1级目录占1位16进制,既2^4=16个目录0-f
2 2级目录占2位16进制,既2^8=256目录00-ff
3 3级目录占2位16进制,级2^8=256个目录 00-ff
对客户端限速
limit_rate rate;
限制响应给客户端的传输速度,单位是bytes/second
默认值为0表示无限制
比如限制1MB/
limit_rate 1024000;
limit_except method ...{...},仅能使用location限制客户端使用除了指定的请求方法之外的其他方法
method:GET,HEAD,POST,PUT,DELETE,,MKCOL,COPY,MOVE,OPTIONS,PROPFIND,PROPPATCH,LOCK,UNLOCK,PACH
location / {
limit_xpcept GET {
allow 192.168.1.0/24;
deny all;
}
}
除了GET个HEAD之外其他方法仅允许192.168.1.1/24网段主机使用
aio on|off
是否启用aio,异步io,
directio size|off;
是否同步(直接)写磁盘,而非写缓存,在linux主机启用O_DIRECT标记,则文件大小等于给定大小时使用,例如:directio 4m
也就是直接把内容直接写入磁盘而非写入内存,再写入硬盘,不启用的时候是直接写入内存中
open_file_cache off;
open_file_cache max=N [inactive=time];
nginx可以缓存以下三种信息:
(1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间
(2) 打开的目录结构
(3) 没有找到的或者没有权限访问的文件的相关信息
max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现管理
inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于
open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项 , 将被删除
open_file_cache_errors on | off;
是否缓存查找时发生错误的文件一类的信息默认值为off
open_file_cache_min_uses number;
open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项
配置文件
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
#location ~ /\.ht {
# deny all;
#}
}
}
讲解:
^~
对URI的最左边部分做匹配检查,不区分字符大小写
~
对URI做正则表达式模式匹配,不区分字符大小写
~*
对URI做正则表达式匹配,不区分字符大小写
不带符号:匹配起始于此URI的所以的URI
匹配优先级从高到低
=,^~,~/,~*,不带符号
server_name name
虚拟主机的主机名称,后可跟多个由空白字符分隔的字符串,
支持*通配任意长度的任意资费
例子:
server_name *.9527edu.org www.9527edu.*
tcp_nodelay on|off
可用于http,server,location语句块
在keepaived模式下的连接数是否启用TCP_NODELAY选项,
当为off时,延迟发送,合并多个请求后再发送,这样效率很低,客户请求慢!
默认为on时,不延迟发送
sendfile on|off
是否启用sendfile功能,在内核中封装豹纹直接发送
默认为off
server_tokens on|off
server段使用
是否在响应报文的server首部显示nginx版本
location匹配
在一个server中location配置段可存在多,用于实现从url到文件系统的路径映射;nginx会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置
server {
listen 80;
server_name localhost;
root /www/www.a.com;
location /images/ {
root /app/www.a.com;
}
}
匹配www.a.com/images/123.jpg
真实路径应该是/aap/www.a.com/images/123.jpg
alias path:
路径别名,文档映射的另一种机制,仅能使用location上下文
例子:
https://9527edu.org/bba/index.php
location /bbs/ {
alias /web/forum/;
} ----> /web/forum/index.html
locaation /bbs/ {
root /web/forum/;
} -----> /web/forum/bbs/index.html
注意:location中使用时root制定和alias指令的意义不同
a. root,给定的路径对应于location中的/URI/左侧的/
b. alias,给定的路径对应于location中的/URI/右侧的/
index
指定默认访问页面
例子:
server {
listen 80;
server_tokens off;
server_name www.b.com;
root /data/web2/;
location /images {
alias /aap/web2/;
index 123.jpg
}
}
这样访问http://www.b.com/images/的时候默认访问的页面就是http://www.b.com/images/123.jpg
自定义错误页面
error_page code ..[=[response]] uri
模块:ngx_http_pore_module
定义错误页面,以制定的响应的状态码进行相应
可用位置:http,server,location,if in location
erroe_page 404 /404.html
error_page 404 =200 /404.html
自定义错误页面
例子:
server {
listen 80;
server_tokens off;
server_name www.b.com;
erroe_page 400 /404.html;
locaion /404.html {
root /data/erroe_html/;
}
}
错误页面做跳转,404跳转到302
例子:
server {
listen 80;
server_tokens off;
server_name www.b.com;
erroe_page 404 =302 /302.html;
locaion /302.html {
root /data/erroe_html/;
}
}
try_files file ... uri;
try_files file ... code;
应用段 :server,location
按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件 件或者文件夹都找不到,会进行一个内部重定向到最后一个参数,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向,最后一个参数是回退URI且必须存在,否则会小狐仙内部500错误
如果找到指定文件或者文件夹下的东西,会返回默认的文件。
例子:
server {
listen 80;
server_tokens off;
server_name www.b.com;
root /data/web/;
location /images {
alias /aap/web2/;
try_files $uri /default.jpg
}
}