Nginx配置详细解释


一、配置详细解释

Nginx的配置文件
在这里插入图片描述

  • 配置文件由指令和指令块构成
  • 每条指令以;分号结尾,指令与值之间以空格符号分隔
  • include语句允许组合多个配置文件以提升可维护性
  • include语句允许组合多个配置文件以提升可维护性
  • pid号 /run/nginx.pid(yum安装)
  • 主配置文件 /etc/nginx/nginx.conf
  • 子配置文件 /etc/nginx/conf.d/*.conf

关闭版本

在主配置文件中http语句中加上 server_tokens off; 然后重新载入配置文件即可。
在这里插入图片描述
在这里插入图片描述
验证成功

修改启动的进程数

在这里插入图片描述
在这里插入图片描述

cpu与work进程绑定

将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的,绑定并不是意味着当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。
这种称之为cpu的亲缘性。
在这里插入图片描述
注意:要绑定一起绑定
worker_cpu_affinity 00000001 00000010 00000100 00001000;第0号—第3号CPU

nginx进程的优先级

即调整worker进程的优先级;工作进程的优先级默认为0,工作进程的优先级为-20~19
在主配置文件中加上worker_priority x;
在这里插入图片描述
验证成功

work进程打开的文件个数

worker_rlimit_nofile 65536;
上述所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制。需要与ulimit -n 或者limits.conf的值保持一致。
在这里插入图片描述

event事件

events {
   worker_connections  65536;  
   use epoll;
   accept_mutex on; 
   multi_accept on; 
 }

worker_connections 65536; #设置单个工作进程的最大并发连接数
use epoll; #使用epoll事件驱动,Nginx支持众多的事件驱动,比如:select、poll、epoll,只能设置在events模块中设置。
accept_mutex on; #on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为on
multi_accept on; #ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。建议设置为on

二、Http设置

http是一个大的语句块,包含若干个小的语句块

协议配置说明

在这里插入图片描述

 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    server_tokens  off;
   
    include /etc/nginx/conf.d/*.conf;

log_format 定义日志的格式,并取名为main;
access_log /var/log/nginx/access.log main;定义日志存放的位置,并采用main格式
sendfile on; 开启高性能的文件传输机制,可以直接在内核空间和应用程序空间之间传输数据,而无需将数据从内核空间复制到应用程序空间,从而提高了文件传输的效率和性能。零拷贝技术
tcp_nopush on; #在开启了sendfile的情况下,合并请求后统一发送给客户端。
tcp_nodelay off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户响应报文。
keepalive_timeout 65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout=65,可以和第一个值不同
include mime.types; #导入支持的文件类型
default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件
include /etc/nginx/conf.d/*.conf;#表明子配置文件所在的位置。

mime

此项为支持的 文件格式,如果不支持的格式 会自动帮你下载,如果支持 就会显示在网页上。
/etc/nginx/mime.types
在这里插入图片描述

虚拟主机

将一台主机虚拟成多台主机,有三种方式,基于端口,基于IP地址,基于域名。
1.基于端口
在这里插入图片描述
root指定了主页文件的位置
在这里插入图片描述

2.基于域名
在这里插入图片描述
在这里插入图片描述
3.基于IP地址
在这里插入图片描述
在这里插入图片描述

alias

在这里插入图片描述
在这里插入图片描述
验证成功

location

在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,按一定的优化级找出一个最佳匹配,而后应用其配置在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最高的一个uri,uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。

基本语法规则
location [ = | ~ | ~* | ^~ ] uri { … }

  1. = 用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
  2. ^~ 用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
  3. ~ 用于标准uri前,表示包含正则表达式,并且区分大小写
  4. ~* 用于标准uri前,表示包含正则表达式,并且不区分大写
  5. 不带符号 匹配起始于此uri的所有的uri

匹配优先级从高到低
=, ^~, ~ / ~*(谁写在前面谁优先级高), 不带符号

特别说明:
~* 用来对用户请求的uri做模糊匹配,uri中无论都是大写、都是小写或者大小写混合,此模式也都会匹配,通常使用此模式匹配用户request中的静态资源并继续做下一步操作,此方式使用较多注意: 此方式中,对于Linux文件系统上的文件仍然是区分大小写的,如果磁盘文件不存在,仍会提示404。
~* 虽然 不区分大小写 但是系统的文件系统区分大小写。

location遍历规则
在这里插入图片描述
解释:优先遍历前缀匹配的三种形式,如果匹配上=字符串这种形式,意味着精确匹配,则立即停止匹配。
如果没有匹配上,则开始其他两种形式的匹配,并记住最长字符的匹配。如果匹配上^ ~的形式,则停止匹配,如果最长匹配不是^ ~,则需要继续进行正则匹配,如果没有正则匹配,则返回使用最长匹配。

access模块

访问控制模块,用于控制访问的主机地址。可以用精准的IP地址,也可以用网段。同时,注意这个模块也是一旦命中就不会往下继续匹配了,所以范围越小写的往上。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证模块

htpasswd 此命令来自于httpd-tools包中,没有的话自己安装下即可。
如何生成账号和用户

htpasswd -c  文件路径 姓名        	 交互式生成密码
htpasswd -bc 文件路径 姓名 密码   		直接将密码跟在后面 

-c  代表新建用户名和密码对应的文件
-b  将密码跟在用户名后

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
验证成功。

自定义错误页面

我们可以改变默认的错误页面,同时也可以用指定的响应状态码进行响应。

error_page code ... [=[response]] uri;
页面错误代码  
error_page    固定写法
code          响应码
=             可以将响应码转换
uri           访问连接

在这里插入图片描述
在这里插入图片描述
验证成功

自定义日志存放位置

默认日志文件放在/var/log/nginx下面,但一台真实主机会虚拟成多台主机,故将各自虚拟主机的日志文件分开放就很有需要。
在这里插入图片描述
当然,错误日志可以规定当达到什么级别才记录。

error_log       文件路径      级别(info  debug等  可以忽略不写)

在这里插入图片描述

try_files检测文件是否存在

try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。

在这里插入图片描述
注意如果没有托底的/about文件将会出现50X错误,所以一定要设置。
在这里插入图片描述
在这里插入图片描述
验证成功。

优化操作:如果没有托底界面,可以自定义响应码返回,然后结合重定义错误界面,将客户引导至新的界面。

server{
        listen 80;
        server_name  www.pc.com;
        root /data/nginx/pc;
        location  / {
        root      /data/nginx/pc/;
        try_files $uri  $uri.html $uri/index.html =489;
        }
        error_page 489 /40x.html;
        location = /40x.html {
        root    /data/nginx/error/;
        }
}

长连接

http 基于tcp协议,需要三次握手再传输数据。肯定不想一次三次握手才能下载一个资源,要一次三次握手下载多个资源。
这个时候就需要用到长连接。
keepalive_timeout timeout [header_timeout];
#设定保持连接超时时长,0表示禁止长连接,默认为75s,通常配置在http字段作为站点全局配置。
keepalive_requests number;
#在一次长连接上所允许请求的资源的最大数量,默认为100次,建议适当调大。

keepalive_requests 3;
#最大下载三个资源就会断开
keepalive_timeout 60 65;   #只能有一个空格 
#开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。
Keep-Alive:timeout=60  #浏览器收到的服务器返回的报文
#如果设置为0表示关闭会话保持功能,将如下显示:
Connection:close  #浏览器收到的服务器返回的报文

在这里插入图片描述
对某种浏览器禁用长连接

keepalive_disable none | browser ...;  
#对哪种浏览器禁用长连接
  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值