【Nginx】配置文件

主配置文件(nginx.conf)

nginx.conf配置文件由三部分组成

worker_processes  1; #允许进程数量,建议设置为cpu核心数或者auto自动检测,注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个

events {
    #单个进程最大连接数(最大连接数=连接数*进程数)
    #根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。
    worker_connections  1024;
}


http {
    #文件扩展名与文件类型映射表(是conf目录下的一个文件)
    include       mime.types;
    #默认文件类型,如果mime.types预先定义的类型没匹配上,默认使用二进制流的方式传输
    default_type  application/octet-stream;

    #sendfile指令指定nginx是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度。
    sendfile        on;
    
     #长连接超时时间,单位是秒
    keepalive_timeout  65;

 #虚拟主机的配置
    server {
    #监听端口
        listen       80;
        #域名,可以有多个,用空格隔开
        server_name  localhost;

    #配置根目录以及默认页面
        location / {
            root   /www/test80;
            index  index.html index.htm;
        }

    #出错页面配置
        error_page   500 502 503 504  /50x.html;
        #/50x.html文件所在位置
        location = /50x.html {
            root   html;
        }
        
    }
    
    
    #虚拟主机的配置
    server {
    #监听端口
        listen       81;
        #域名,可以有多个,用空格隔开
        server_name  localhost;

    #配置根目录以及默认页面
        location / {
            root   /www/test81;
            index  index.html index.htm;
        }

    #出错页面配置
        error_page   500 502 503 504  /50x.html;
        #/50x.html文件所在位置
        location = /50x.html {
            root   html;
        }        
    }
}

 

第一部分:全局块

从配置文件开始到events块之间的内容,主要会设置影响nginx服务器整体运行的配置指令

#user  nobody;
worker_processes  1;                --工作进程数,一般设置成内核数量相同,值越大处理并发越多
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;                --进程pid存放路径

第二部分:events块

events块主要影响nginx服务器与用户的网络连接

events {
    worker_connections  1024;                --单个工作进程的连接数
}

第三部分:http块

http块又包括http全局块和server块

  • http全局块:配置包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、连接请求数上限
  • server块:和虚拟主机有密切关系,每个http块可以包括多个server块,每个server块代表一个虚拟主机,每个server块也分为全局server块,以及可以同时包含多个location块。
    • 全局server块:最常见配置本虚拟主机的监听配置和主机名称、端口
    • location块:这块主要作用是基于nginx服务器接收URL进行匹配,对特定请求进行处理。地址定向、数据缓存和应答控制。还有许多第三方模块的配置在这里进行
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;                    --超时时间
    #gzip  on;

    server {                                --一个站点、一个虚拟主机
        listen       80;                            --端口
        server_name  www.fan.cn;            --域名
        location / {
            root   html/www;                            --目录
            index  index.html index.htm;                --页面
        }

        error_page  404              /404.html;            --404错误页面显示
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

server_name匹配规则

server_name用来配置域名或ip,我们可以在同一个server_name中配置多个域名

  • 完整匹配
    server中可以配置多个域名,例如:
server_name  www.fan.cn  cart.fan.cn;
  • 通配符匹配
server_name  *.fan.cn;

需要注意的是精确匹配的优先级大于通配符匹配和正则匹配。

  • 正则匹配
server_name ~^[0-9+]\.fan\.cn$;

正则匹配格式,必须以开头。如果开头没有,则nginx认为是精确匹配。在逻辑上,需要添加^和$锚定符号。
~* 不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)
!~ 区分大小写不匹配
!~* 不区分大小写不匹配

location说明

用于配置指定路径

  • =:用于不含正则表达式的uri前,要求请求字符串与uri完全匹配,如果匹配成功就不继续搜索其他location
  • ~:用于表示uri包含正则表达式,并且区分大小写
  • ~*:用于表示uri包含正则表达式,并且不区分大小写
  • ^*:用于不含正则表达式的uri前,

负载均衡流量分配策略

轮询(默认):逐一分发,如果服务器down掉会自动剔除

upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}

权重(Weight):权重越高,被分配流量越多

upstream myserver{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=8;
}

ip_hash:按ip的hash结果分配,这样的话每个ip固定分配到一个服务器上,可以解决session问题

upstream myserver{
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}

fair:按服务器响应时间分配,响应时间短的服务器优先分配

upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
fair;
}
posted @ 2022-05-29 10:37  你也很优秀  阅读(75)  评论(0编辑  收藏  举报