nginx1754139893

logs目录下:
access.log - 访问日志
error.log - 错误日志
nginx.pid - nginx进程的pid

nginx服务器启停

1、nginx中master和worker进程

  • nginx默认多进程的工作方式,其中一个为master进程,其他是worker进程
  • 我们作为管理员,和master进程直接交互,只需要通过给master进程发送信号就可以控制nginx
  • 获取master进程对应的pid :ps -ef | grep nginx 或者查看nginx.pid文件
    在这里插入图片描述
    在这里插入图片描述
    信号:
  • TERM/INT 立即关闭整个服务
  • QUIT 优雅地关闭整个服务,master会告诉所有worker不要再去接受新请求,把当前处理的请求处理后再去关闭
  • HUP 重读配置文件并使用服务对新配置生效
  • USR1 重新打开日志文件,可以用来进行日志切割
  • USR2 平滑升级到最新版的nginx
  • WINCH 所有子进程不再接受处理新连接,相当于给worker进程发送QUIT指令
  • 调用命令:kill -signal masterPi
  • kill -TERM PID
  • kill -TERM ‘cat /usr/local/nginx/logs/nginx.pid’‘’

三大模块

在这里插入图片描述

HTTP块中自定义服务日志

1)access_log 用于设置用户访问日志的相关属性

  • 语法:access_log path[format[buffer=size]]
  • 默认为 access_log logs/access.log combined;
  • 位置可以是http块、server块、location块,就近匹配log

2)log_format 用于指定日志的输出格式

  • 语法:log_format name [escape=default|json|none] string…;
  • 默认为 log_format combined “…”
  • 位置 http块

其中1)中的format和2)中的name要保持一致,例如
在这里插入图片描述

sendfile

用于设置nginx服务器是否使用sendfile()传输文件,该属性可以大大提高nginx处理静态资源的性能

  • 语法:sendfile on|off
  • 默认值:sendfile off;
  • 位置:http、server、location

keepalive相关

keepalive背景:

  • http是无状态协议,客户端向服务端发一个tcp请求,服务端响应完毕后断开连接。如果客户端向服务端发多个请求,每个请求都要重新建立一次连接,效率较低。
  • 使用keepalive模式,可以告诉服务端在处理完一个请求后保持这个tcp连接的打开状态,若收到来自这个客户端的其他请求,服务端就会复用这个未被关闭的连接,而不需要重新创建一个连接,以此提升效率。但这个连接也不能一直保持,因为连接过多时服务端的性能就会下降,此时就需要设置其长连接的超时时间

1)keepalive_timeout

  • 用于设置长连接的超时时间
  • 语法:keepalive_timeout time;
  • 默认值:keepalive_timeout 75s;
  • 位置:http、server、location

2)keepalive_requests

  • 用于设置一个keepalive连接使用的次数
  • 语法:keepalive_requests num;
  • 默认值:keepalive_requests 100;
  • 位置:http、server、location

Nginx静态资源部署

浏览器发送http请求从服务端获取所需要内容并把内容回显展示。这里的内容就包括静态资源和动态资源。

  • 静态资源:在服务端真实存在并且可拿来直接展示的文件,如html页面、css文件、js文件、图片和视频等资源
  • 动态资源:在服务端真实存在但要获取需要经过一定业务逻辑处理,根据不同条件展示在页面的内容,如报表数据展示、根据当前登录用户展示相关数据等资源

listen

listen指令用来配置监听端口

  • 语法:listen address[:port][default server]...;
  • 默认值:listen *:80 | *:8000
  • 位置:server
  • default_server属性是标识符,用来将此虚拟主机设置成默认主机(如果没匹配到对应的IP:port,则会用第一个默认的server)

常见用例

listen 127.0.0.1:8000;
listen 127.0.0.1;  监听指定ip的所有端口
listen 8000; 监听指定端口上的连接

server_name

server_name 用于设置虚拟主机服务名称,可以在/etc/hosts文件添加ip和域名之间的对应关系,如127.0.0.1 www.xxx.cn,在ping www.xxx.cn时,就会走host映射到127.0.0.1,否则则通过外网的DNS解析到对应的IP

  • 语法:server_name name…;name可以提供多个,用空格分割
  • 默认值:server_name “”;
  • 位置:server

关于server_name的配置有三种,分别是:

  • 精确匹配:server_name www.baidu.cn www.ali.cn;
  • 通配符匹配:server_name *.xxx.cn www.xxx.*;
  • 正则匹配:需要用~作为正则表达式字符串的开始标记,如server_name ~^www\.(\w+)\.com$;,也可以 server_name ~^www\.\w+\.com;,这里的括号表达式可以用 $n 取值,代表第n个匹配,如www.xx.com即在location /中可以 return 200 $1; $1即xx
    在这里插入图片描述
代码说明
^匹配搜索字符串开始位置
$匹配搜索字符串结束位置
.匹配除换行符之外的任何单个字符
\转义字符,将下一个字符标记为特殊字符
[xyz]字符集,与任意一个指定字符匹配
[a-z]字符范围,匹配指定范围内的任何字符
\w与以下任意字符匹配A-Z a-z 0-9和下划线,等效于[A-Za-z0-9]
\d数字字符匹配,等效于[0-9]
{n}正好匹配n次
{n,}至少匹配n次
{n, m}匹配至少n次至多m次
*0次或多次,{0,}
+1次或多次,{1,}
?0次或1次 {0, 1}

location

location用来设置请求的uri,uri变量是待匹配的请求字符串,先使用不包含正则的匹配度最高的location,然后再用包含正则的location,如果找到正则就用正则。除非用^~停止搜索

  • 语法:location [ = | ~ | ~* | ^~ | @] uri {...}
  • 默认值:-
  • 位置:server,location

1)不带符号,要求必须以指定模式开始
在这里插入图片描述
以下访问均可匹配

  • http://127.0.0.1:80/abc
  • http://127.0.0.1:80/abc?t=1
  • http://127.0.0.1:80/abc/
  • http://127.0.0.1:80/abcdef

2)=:用于不包含正则表达式的uri前,必须与指定的模式精确匹配
在这里插入图片描述
以下访问可以匹配:

  • http://127.0.0.1/abc
  • http://127.0.0.1/abc?t=1

以下访问不可匹配:

  • http://127.0.0.1/abc/
  • http://127.0.0.1/abcdef

3)~:用于表示当前uri中包含了正则,并且区分大小写
在这里插入图片描述4)~*:用于表示当前uri中包含了正则,不区分大小写
在这里插入图片描述
5)^~:用于不包含正则表达式的uri前,功能和不加符号的一致,唯一不同的是如果模式匹配,就停止搜索其他模式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值