nginx基础篇

nginx基础篇

一、全局块

1.master_process:是否开启工作进程worker

master_process on|off;    # 默认on;

注:修改后需重启nginx生效

2.worker_processes:生成工作进程的数量

worker_processes num|auto;      # 默认1

注:受系统性能限制,建议与cpu内核数一致

3.daemon:守护进程

daemon on|off;    # 默认on

注:on则nginx转后台运行,不占用终端,不受终端生命周期限制,修改后需重启nginx生效。

4.pid:指定nginx的master的id文件的路径

pid file;    # 默认:/usr/local/nginx/logs/nginx.pid

5.error_log file [日志级别]:配置错误日志

error_log logs/error.log error;

注意:日志级别:debug|info|notice|warn|error|crit|alert|emerg
建议:不要设成info以下(越靠右等级越高),浪费io资源

6.include:加载其他配置文件

include file;

7.user:指定worker能调用哪个用户所属的文件

user root;      # 默认 nobody

二、events块

1.accept_mutex:设置nginx网络连接序列化

accept_mutex on|off;

on:一个一个worker唤醒接收用户请求,适应同时请求少的情况 (默认)
off:多个worker同时竞争用户请求,适应同一时间多请求的情况

2.multi_accept:是否允许worker同时接受多个网络连接

multi_accept on|off;  

on:一个worker可以同时接受多个网络连接 (推荐)
off:一个worker只能同时接受一个网络连接 (默认)

3.worker_connections:单个worker最大连接数

worker_connections 512;   # 默认

注:不能大于操作系统支持打开的最大句柄数。

4.use:设置nginx用哪种事件驱动来处理网络消息

use select|poll|epoll|kqueue;     # 推荐:epoll  

三、http块

1.default_type:配置nginx响应前端请求默认的MINE类型

default_type text/plain;    # 默认application/octet-stream

注:text/plain 文本,text/html 超文本
application/json json文本,application/octet-stream 下载附件(二进制流)
例:

default_type text/plain;
return 200 "this is a text"      # 反馈状态码200正常,然后显示指定文本

2.自定义服务日志

2.1 access_log:用来设置用户访问日志的相关属性

# access_log path[format[buffer=size]]  format格式名称  buffer日志大小
access_log logs/access.log combined;

2.2 log_format:用来指定日志的输出格式

# log_format name [escape=default|json|none] string...;
log_format combined "...";

注:只能在http块配置

  1. $http_user_agent:日志返回客户端信息

3.sendfile:是否用sendfile()传输文件,可以提升nginx处理静态资源的性能

sendfile on|off;     # 默认off

注:

  1. sendfile off:
    需要有2次用户区和内核区的交互命令,4次文件拷贝传输

  2. sendfile off:
    只需要有1次用户区和内核区的交互命令,3次文件拷贝传输(且少了内核态和用户态的进程切换)

4.keepalive_timeout:设置长连接的超时时间

keepalive_timeout time;      # 默认75,默认单位s

注:

  1. http是无状态协议,客户端向服务端发送tcp请求,服务端响应完就会断开连接
  2. 当客户端需要发送多个请求时,使用keepalive时,可以使服务端响应完请求时不断开连接,让下一个请求可以继续使用这个连接。
  3. 不宜开启时间过长,否则会导致存在连接过多,影响服务器性能。

5.keepalive_requests:设置一个keepalive连接使用的次数

keepalive_requests num;     # 默认100

6.tcp_nopush:提升网络包的传输效率,与sendfile同时打开才生效

tcp_nopush on|off;          # 默认off

注:

  1. tcp_nopush off 是一有数据就马上发送。
  2. tcp_nopush on 是设一个缓存区,等数据将之填满,才发送。

7.tcp_nodelay:提高网络包传输的实时性,与keepalive同时打开才生效

tcp_nodelay on|off;         # 默认off

注:

  1. tcp_nodelay on 不等待缓存区装满,实时传输数据。
  2. tcp传输除了传输需求数据,还好加上其他校验数据一起传输,因此,当传输频率高,单次传输需求数据较少时,会造成极大的开销,数据传输效率低。
  3. tcp_nopush,tcp_nodelay同时开启时,数据量大时,会等待缓存区装满再发送数据,当到达最后一次,因数据没填满缓存区而暂停时,会忽略tcp_nopush直接实时传输数据。

四、http-server块

1.listen监听端口

listen port;

listen port default_server;      # 匹配不到server_name时,默认匹配该server

2.server_name监听域名

# 精确匹配,支持配置多个域名
server_name address1 address2 address3;

注:监听是server_name和listen组合监听,当只匹配到listen,找不到server_name时,会默认匹配符合该端口的第一个server(或匹配配置了default_server的server)。

# 通配符匹配,server_name支持配置多个域名
server_name www.lzjfengyi.cloud *.lzjfengyi.cloud www.lzjfengyi.*;

注:不能使用 www..cloud 、 www.lzjfengyi.c 、 w*.lzjfengyi.cloud 会匹配失败

# 正则表达式匹配,使用 ~ 作为正则表达式字符串的开始标志
server_name ~^www\.\w+\.com$;

例如:

server_name ~^www\.(\w+)\.com$;
default_type text/plain;   # 配置http返回的是文本类型
return 200 $1; 

注:

  1. ~后面不能加空格,会报错,括号可以气质,如果网址是 www.lzjfengyi.cloud ,则$1的值就是 lzjfengyi
  2. 当网址能有多个server匹配时,匹配优先级:精确匹配>前通配符匹配>后通配符匹配>正则表达式匹配>默认server匹配

3. error_page

3.1 指定错误返回的页面
error_page 500 502 503  /50x.html;
3.2 指定错误返回的错误信息
server{
    error_page 404 @jump_to_error;
    localtion @jump_to_error{
        default_type text/plain;
        return 404 'the page not found';
    }
 }
3.3 状态码更改为另外一个状态码返回
error_page 404 =200 /abc.html;    # 注意等号左边要加空格,右边不能加空格
location =/abc.html {
    root html;
}

五、server-location块

1. 路径

1.1 精确匹配
location =/abc {}    # 仅匹配abc本身
1.2 指定模式匹配
location /abc {}    # 匹配以/abc开头的所有,如/abc,/abcde,/abc/ef
1.3 正则表达式匹配
# ~标志正则表达式,并区分大小写,^标志开始,$标志结束
location ~^/abc\w$ {}

# ~*标志正则表达式,并不区分大小写,^标志开始,$标志结束
location ~*^/abc\w$ {}
1.4 ^~
# ^~ 用于非正则表达式,功能与不加符合的一致,但如果匹配上,则直接使用该location
location ^~/abc {}

注:

  1. 指定模式匹配:当匹配是第一个location时,会继续搜索后面的是否匹配,会使用最后一个匹配上的location。
  2. 当匹配上 ^~ 时,直接使用这个location,不再往后搜索。
  3. 多个location匹配得上时,精确匹配>^~>正则>指定模式匹配

2. 资源对应目录

2.1 root
root path;       # root的处理结果是:root路径+location路径

location /images/ {
    root html;
}
2.2 alias
alias path;     # alias处理结果是:使用alias路径取代location路径

location /images/ {
    alias /usr/location/nginx/html/images/;
}

注:

  1. root定义最上层目录,alias定义全路径
  2. 如果location是 / 结尾,则alias也必须是 / 结尾,root则没要求。

3. index 访问该location路径时访问的首页

index file_name1 file_name2;    # 该文件需要在root/alias指定的目录下。

注:

  1. index后面可以设置多个,空格分开
  2. 多个设置会从左到右开始尝试,找到第一个可以访问的就停止。

参考网站:http://nginx.org/en/docs/http/ngx_http_core_module.html

vim小技巧:

  1. 多行输入:
    ctrl+v,然后通过方向键选中多行,输入大写的i,然后输入你想输入的,然后按Esc键,完成多行输入。
  2. 多行删除:
    ctrl+v,然后通过方向键选中多行,输入d,完成删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值