Nginx配置文件详解

Linux安装nginx可以参考文章–Linux服务器安装Nginx
一般nginx主配置文件位置为安装目录下的 /conf/nginx.conf或者 /etc/nginx.conf
本文讲解nginx安装路径为:/usr/local/nginx

1.Nginx配置文件结构

-Nginx配置文件分为三个块(全局块、events块、http块)和四大部分(全局设置部分、主机设置部分、上游服务器设置部分、url匹配设置部分)
-全局设置部分(main):全局设置的一部分可以影响其他块的设置;
-主机设置部分(server):指定nginx代理服务器的主机域名、ip地址和端口;
-上游服务器设置部分(upstream):设置多个后端服务器的地址,配置每个服务器权重,从而实现后端服务器的负载均衡
-url匹配设置部分(location):对于客户端请求的url部分路径

- 四部分结构关系图

server继承main,location继承server,upstream既不继承也不会被继承
在这里插入图片描述
-main层:主要配置Nginx服务器的整体配置指令;
-events层:主要影响Nginx服务器与用户的网络连接
-http层:主要是Nginx服务器中的代理、缓存和日志定义等大多数的功能和第三方模块的配置;
-server层:Nginx服务器进行代理的核心层,利用虚拟主机的技术可以对多个网址进行代理,server也可以有多个;
-location层:对请求的特定url进行匹配,转发地址定向、数据缓存和应答控制等功能,许多第三方模块配置也在location中;

2.配置文件内容

// 本文件中nginx安装路径为:/usr/local/nginx
//全局块
//配置用户或者组,默认nobody nobody
user nobody nobody;
//配置nginx的进程数,默认为1,推荐设置为cpu核心数
worker_processes 1;
// //全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
err_log /usr/local/nginx/logs/error.log info;
// 进程PID存放路径
pid /usr/local/logs/nginx.pid;

//events块
events{
    //设置网路连接序列化,防止惊群现象发生,默认为on
    accept_mutex on;
    //设置一个进程是否同时接受多个网络连接,默认为off
    multi_accept off;
    //事件驱动模块,默认为epoll,可选择select,poll,epoll
    use epoll;
    //标识单个worker进程的最大并发数(连接数),默认为512(最大连接数=连接数*进程数)
    worker_connections 1024;
}

//http块
http{
    //文件拓展名与文件类型的对应映射表
    include /usr/local/nginx/conf/mime.types;
    //配置nginx响应前端请求默认的MIME类型,默认default_type text/plain
    default_type application/octet-stream;
    //配置默认编码
    charset utf-8;

    //取消服务日志
    access_log off;
    //可以自定义日志格式
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    //配置访问日志文件路径
    accsess_log /usr/local/nginx/logs/access.log main;

    //设定通过nginx上传文件的大小
    client_max_body_size 10m;

    //开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,
    //对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,
    //以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
    sendfile on;

    //开启目录列表访问,合适下载服务器,默认关闭
    autoindex on;

    //长连接模式,默认开启,单位秒
    keepalive_timeout 60;

    //gzip模块设置
    gzip on;

    //设置gzip压缩级别,默认为3,可选值为0-9,0表示不压缩,1表示最小压缩,9表示最大压缩
    gzip_comp_level 3;

    //设置gzip压缩类型,默认为text/html,text/css,text/javascript,application/x-javascript
    gzip_types text/plain text/css application/x-javascript text/javascript application/javascript application/json;

    //设置gzip压缩文件后缀,默认为.html,.css,.js,.json
    gzip_proxied any;



    //upstream负载均衡配置模块
    upstream webserver{
        //upstream负载均衡,有4种配置方式
        //轮询(weight):指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。默认当weight不指定时,各服务器weight相同,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
        server 192.168.1.85:8085 weight=1; //格式: server 服务端IP地址:端口号 weight=权重
        server 192.168.1.86:8085 weight=2 down; // down 表示当前服务已经挂掉不参与负载均衡
        server 192.168.1.87:8085 weight=3 backup;// backup 标识其他所有的非down和backup的服务都忙的时候,才会请求backup的服务,机器压力相对较小。
        //ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。如果后端服务器down掉,要手工down掉。
//         ip_hash;
//         server 192.168.1.85:8085;
//         server 192.168.1.86:8085;
        //fair(第三方插件):按后端服务器的响应时间来分配请求,响应时间短的优先分配。
//         server 192.168.1.85:8085;
//         server 192.168.1.86:8085;
//         fair;
        //url_hash(第三方插件):按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存服务器时比较有效。在upstream中加入hash语句,hash_method是使用的hash算法。
//         server 192.168.1.85:8085;
//         server 192.168.1.86:8085;
//         hash $request_uri;
//         hash_method crc32;
    }

    //server虚拟主机配置模块,可以有多个
    server{
        //监听端口
        listen 80;
        //监听域名或者IP地址,可以有多个用空格间隔
        server_name localhost;

        access_log  logs/host.access.log  main; //
        //配置错误页面(当404时展示404.html页面,配置一个location来跳转到具体错误页面)
        error_log 404 /404.html;

        //location请求url过滤模块,可以有多个
        //配置所有路径进行过滤
        location /{
            //根目录
//             root path;
            //设置网站的默认首页
//             index index.html index.html;
            //请求转向webserver中配置的服务器
            proxy_pass http://webserver;
            //设置拒绝的IP地址
            deny 127.0.0.1;
            //设置允许的IP地址
            allow 127.0.0.1;
        }

        //配置错误页面转向
        location = /404.html{
            root /usr/local/nginx/web_app/dist;
            index 404.html
        }
    }

}

特殊说明:
listen监听
listen port #监听该端口的所有IP连接
listen *:80 | *:8080 #监听所有80端口和8080端口
listen IP_address:port #监听指定的地址和端口号
listen IP_address #监听指定ip地址所有端口
listen *:8000; 监听指定端口上的连接

server_name监听
可以基于名称和IP进行配置
1、对于name 来说,可以只有一个名称,也可以有多个名称,中间用空格隔开。
2、使用通配符“*”,但通配符只能用在由三段字符组成的首段或者尾端,或者由两端字符组成的尾端。
3、使用正则表达式,用“~”作为正则表达式字符串的开始标记,“^”和“ ” 之 间 为 要 匹 配 的 内 容 , “ ” 表 示 开 头 “ ”之间为要匹配的内容,“^”表示开头 “ ”表示结尾。
例子:
server_name 127.0.0.1 # 基于Ip配置
server_name www.123.com # 基于名称
server_name www.123.com www.456.com # 多个空格隔开
server_name .123.com www.123. # 使用通配符
server_name ~^wwwd+.123.com$; # 使用正则表达式

常见正则表达式
^:匹配搜索字符串开始位置
$:匹配搜索字符串结束位置
.:匹配除换行符n之外的任何单个字符
[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,}
+:一次或多次,等效于{1,}
?:零次或一次,等效于{0,1}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hippoDocker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值