nginx配置解析说明(一篇搞定nginx)

Nginx配置

I.work_processes 1 进程数

worker_connections  1024; 单进程支持最大并发连接数

nginx支持最大并发数:work_processes * worker_connections

cat /proc/cpuinfo |grep "cores"|uniqCPU核数(linux

每个worker进程都是单线程的进程,多worker进程可以充分利用多核系统架构,但若worker进程的数量多于CPU内核数,那么会增大进程间切换带来的消耗(linux是抢占式内核),一般情况下,配置与CPU内核数相等的worker进程,大于CPU核数可配置但会抢占内核,增大消耗。

events块的主要功能:

配置Nginx服务器与用户的网络连接。

pid        /var/run/nginx.pid; 进程号存放日志  用来配置Nginx当前master进程的进程号ID存储的文件路径

Win+R dxdiag (windows)

II. /etc/nginx/mime.types  HTTP协议消息头中的Content-Type(mime类型)

在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析并展示html等等。

default_type application/octet-stream; #默认文件类型

设置日志模式

日志格式设置。

remote_addr与http_x_forwarded_for用以记录客户端的ip地址;

$remote_user:用来记录客户端用户名称;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_sent :记录发送给客户端文件主体内容大小;

$http_referer:用来记录从那个页面链接访问过来的;

$http_user_agent:记录客户浏览器的相关信息;

sendfile on;

sendfile开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on。如果因为nginx原因图片显示不正常把这个改成off。

tcp_nopush on|off(默认值);

该指令必须在sendfile打开的状态下才会生效,主要是用来提升网络包的传输'效率'

主要思想:要发送的数据先放在缓冲区(no push),等缓冲区满了再发

tcp_nodelay on(默认值)|off;

该指令必须在keep-alive连接开启的情况下才生效,来提高网络包传输的'实时性'

主要思想:一有数据就发送,没有任何延时(no delay)

keepalive_timeout 65 超时时间 指定了客户端与服务器 keep-alive的超时时间,默认75秒

在nginx中设置打开压缩

gzip on|off; #是否开启gzip

gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)

gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)

gzip_disable #正则匹配UA 什么样的Uri不进行gzip

gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)

gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)

gzip_proxied # 设置请求者代理服务器,该如何缓存内容

gzip_types text/plain application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css

gzip_vary on|off # 是否传输gzip压缩标志

  • = 开头表示精确匹配。如 A 中只匹配根目录结尾的请求,后面不能带任何字符串;
  • ^~ 开头表示uri以某个常规字符串开头;
  • ~ 开头表示区分大小写的正则匹配;
  • ~* 开头表示不区分大小写的正则匹配;
  • / 通用匹配, 如果没有其它匹配,任何请求都会匹配到。

优先级

首先精确匹配 =

全部路径匹配
其次前缀匹配 ^~
其次是按文件中顺序的正则匹配 ~或~*
然后匹配不带任何修饰的前缀匹配
最后是交给 / 通用匹配

  • 1.try-files 如果不写上 $uri/,当直接访问一个目录路径时,并不会去匹配目录下的索引页  访问127.0.0.1/images/ 不会去访问  127.0.0.1/images/index.html

try_files $uri $uri/ @rewrites 尝试读取静态文件

@命名location定义规则

重写规则,先说$代表的是参数,所以一定是 () 包含的 $还有一重意思是以XXX结尾

(.*)表示任意字符

 () : 用于匹配括号之间的内容,通过$1、$2调用

示例:

location /ABC/api/pgk-abc/ {

rewrite ^/ABC/(.*)$  /$1 break;

proxy_pass http://ip:port;

# 这里重写掉 ABC , $1 就是 api/pgk-abc/

# 实际请求地址是: http://ip:port/api/pgk-abc/

}

last 和 break 的区别

1. last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异。

注意一点就是,他们会跳过所有的在他们之后的rewrite 模块中的指令,去选择自己匹配的location

2. last 和 break 当出现在location 内部时,两者就存在了差异。

last: 使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚刚的行为。

break: 使用了break 指令,rewrite后不会跳出location 作用域。它的生命也在这个location中终结。

3. 通俗易懂:

last:重新将rewrite后的地址在server标签中执行

break:将rewrite后的地址在当前location标签中执行

expires -1; 缓存,控制图片等过期时间。

1. client_max_body_size

限制请求体的大小,若超过所设定的大小,返回413错误。

client_header_timeout

读取请求头的超时时间,若超过所设定的大小,返回408错误。

3. client_body_timeout

读取请求实体的超时时间,若超过所设定的大小,返回413错误。

转发ip+端口,proxy_pass后面只要有带/的路径,location后面的地址就会丢失,转发路径被识别为绝对路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值