查看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 } }