Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx 配置文件介绍

Nginx 配置文件介绍

作者头像
郑小超.
发布于 2022-09-23 10:46:20
发布于 2022-09-23 10:46:20
1.1K00
代码可运行
举报
文章被收录于专栏:GreenLeavesGreenLeaves
运行总次数:0
代码可运行

本文争对nginx-1.22.0

nginx的核心配置文件是nginx.conf.

1、基本配置

(1)、worker_processes  定义工作进程的数量

最佳值取决于许多因素,包括(但不限于)CPU内核的数量、存储数据的硬盘驱动器的数量以及负载模式。当有人怀疑时,将其设置为可用CPU内核的数量将是一个好的开始(值“auto”将尝试自动检测它)。

(2)、error_log  配置日志记录

可以在同一配置级别【debug、info、notice、warn、error、crit、alert或emerg。】上指定多个日志。如果在主配置级别上未明确定义将日志写入文件,则将使用默认文件。

第一个参数定义将存储日志的文件。特殊值stderr选择标准错误文件。可以通过指定“syslog:”前缀来配置对syslog的日志记录。记录到循环内存缓冲区可以通过指定“memory:”前缀和缓冲区大小进行配置,通常用于调试(1.7.11)。

第二个参数决定日志记录的级别,可以是以下参数之一:debug、info、notice、warn、error、crit、alert或emerg。以上日志级别按严重性增加的顺序列出。设置某个日志级别将导致记录指定和更严重日志级别的所有消息。例如,默认级别错误将导致记录错误、crit、alert和emerg消息。注:默认级别error

(3)、pid 进程id配置

2、events

提供配置文件上下文,其中指定了影响连接处理的指令。

2.1 、worker_connections  设置work进程(worker_processes)可以同时打开的最大连接数。 正式环境可以放大(65535)

这个数字包括所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接。另一个考虑因素是,同时连接的实际数量不能超过当前打开文件的最大数量限制,该限制可以由worker_rlimit_nofile更改。

总连接数=worker_processes * worker_connections

2.2 multi_accept

如果禁用multi_accept,工作进程将一次接受一个新连接。否则,工作进程将一次接受所有新连接。

如果使用kqueue连接处理方法,则忽略该指令,因为它会报告等待接受的新连接数。

2.3  use epoll

设置用于复用客户端线程的轮询方法。具体参考epoll原理

3  worker_rlimit_nofile

更改工作进程的最大打开文件数(RLIMIT_NOFILE)限制。用于在不重新启动主进程的情况下增加限制。

4、http配置

提供指定HTTP服务器指令的配置文件上下文。

4.1  include       mime.types; 

配置支持的多媒体类型,在conf/mime.types文件下查看支持的类型

4.2 default_type

定义响应的默认MIME类型。可以使用types指令设置文件扩展名到MIME类型的映射。 默认是application/octet-stream; 字节流类型,能兼容绝大多数的资源文件.

4.3 log_format

定义日志格式,相关内容查看文档

4.4 access_log 访问日志

简单使用方式  access_log  日志路径  使用的日志模板(log_format);

4.5 sendfile 高效文件传输模式

在此配置中,使用SF_NODISKIO标志调用sendfile(),这将导致它不会在磁盘I/O上阻塞,而是报告数据不在内存中。然后,nginx通过读取一个字节来启动异步数据加载。在第一次读取时,FreeBSD内核将文件的前128K字节加载到内存中,尽管下一次读取将只加载16K块中的数据。这可以使用read_ahead指令进行更改。 

4.6 sendfile_max_chunk 

限制单个sendfile()调用中可以传输的数据量。如果没有限制,一个快速连接可能会完全占用工作进程。 默认2m.

4.7 tcp_nopush

sendfile可以开启高效的文件传输模式,tcp_nopush开启可以确保在发送到客户端之前数据包已经充分“填满”, 这大大减少了网络开销,并加快了文件发送的速度

4.8 tcp_nodelay 该指令必须在keep-alive连接开启的情况下才生效,来提高网络包传输的'实时性'

启用或禁用TCP_NODELAY选项的使用。当连接转换为保持活动状态时,将启用该选项。此外,它在SSL连接、无缓冲代理和WebSocket代理上启用。

tcp_nopush到达最后一个可能因为没有“填满”而暂停的数据包时,Nginx会忽略tcp_nopush参数, 然后,tcp_nodelay强制套接字发送数据。由此可知,TCP_NOPUSH可以与TCP_NODELAY一起设置,它比单独配置TCP_NODELAY具有更强的性能。所以我们可以使用如下配置来优化Nginx静态资源的处理 注意:4.5~4.8全部合理的开启和设置,能有效的解决静态资源访问处理的问题,提升效率.

4.9 keepalive_timeout  长连接超时时间设置

第一个参数设置了一个超时,在此期间,keep-alive客户端连接将在服务器端保持打开状态。零值将禁用保持活动状态的客户端连接。可选的第二个参数在“Keep Alive:timeout=time”响应头字段中设置一个值。两个参数可能不同。

Mozilla和Konqueror可以识别“Keep Alive:timeout=time”标题字段。MSIE会在大约60秒内关闭保持活动连接。

5、server配置

5.1 listen 配置监听端口

5.2 server_name 服务名称

5.3 charset 字符集配置

5.4 access_log 和4.4 access_log类似 如果在server中给了会覆盖4.4中的

5.5 location

语法 location [ = | ~ | ~* | ^~ |@ ] uri{...} 位置 server,location uri变量是待匹配的请求字符串,可以不包含正则表达式,也可以包含正则表达式,那么nginx服务器在搜索匹配location的时候,是先使用不包含正则表达式进行匹配,找到一个匹配度最高的一个,然后在通过包含正则表达式的进行匹配,如果能匹配到直接访问,匹配不到,就使用刚才匹配度最高的那个location来处理请求。'

5.5.1 示例一 配置请求访问nginx安装目录下的静态资源

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        location / {
            root   html;
            index  index.html index.htm;
        }

匹配访问ip地址加监听端口加/的请求,请求会重定向到nginx root(根目录)的html文件夹,访问index.html或者index.htm页面.

5.5.2  示例二 精准匹配 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        location = /50x.html {
            root   html;
        }

访问ip地址加监听端口加/50x.html并转发

5.5.3示例三 配置禁止访问的文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      #location ~ /\.ht {
        #    deny  all;
        #}

5.5.3示例四 配置https访问

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

完整配置文件内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;

worker_rlimit_nofile 65535;
events {
    use epoll;
    worker_connections  65535;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
nginx配置文件详解
nginx配置参考文档(附带中文说明),能解决大部分配置问题了! #定义Nginx运行的用户和用户组 user nginx nginx; #指定工作衍生进程数(一般等于CPU的总核数或者总核数的两倍), #每个进程耗费10MB-12MB内存 worker_processes 4; #指定错误日志存放的路径 #错误日志记录级别可选项为:[debug | info | notice | warn | error | crit] #error_log logs/error.log; #error_lo
苦咖啡
2018/05/08
1.2K0
Nginx配置文件nginx.conf全解
nginx配置文件nginx.conf的配置http、upstream、server、location等;
青山师
2023/05/05
7530
Nginx配置文件详细说明
#运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; #工作模式及连接数上限 events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可
wangxl
2018/03/08
8520
Nginx(二)------nginx.conf 配置文件
  上一篇博客我们将 nginx 安装在 /usr/local/nginx 目录下,其默认的配置文件都放在这个目录的 conf 目录下,而主配置文件 nginx.conf 也在其中,后续对 nginx 的使用基本上都是对此配置文件进行相应的修改,所以本篇博客我们先大致介绍一下该配置文件的结构。
IT可乐
2018/09/28
1.1K0
Nginx(二)------nginx.conf 配置文件
Nginx系列(3) —— Nginx 的常用命令与配置文件
PS: 默认情况下,window和linux 系统之间是无法相互进行访问的。因为window在访问linux时无法越过linux 的防火墙。
求和小熊猫
2020/11/25
6090
Nginx系列(3) —— Nginx 的常用命令与配置文件
nginx.conf 配置详解(六)
日志级别从低到高分别是:debug、info、notice、warn、error、crit
高大北
2022/06/14
5880
nginx.conf 配置详解(六)
nginx配置文件nginx.conf超详细讲解
#nginx进程,一般设置为和cpu核数一样 worker_processes 4;                         #错误日志存放目录 error_log  /data1/logs/error.log  crit;  #运行用户,默认即是nginx,可不设置 user nginx        #进程pid存放位置 pid        /application/nginx/nginx.pid;         #Specifies the value for maximum file descriptors that can be opened by this process. #最大文件打开数(连接),可设置为系统优化后的ulimit -HSn的结果 worker_rlimit_nofile 51200;
互联网金融打杂
2019/01/24
1.9K0
Nginx配置文件功能注释
最近在学配置Nginx做均衡负载,首先最重要的是Nginx的配置文件,参考网上查到的资料,并结合实践, 将该配置文件的详细功能注释在这里做下笔记,方便今后查阅。 官方的Nginx Wiki(英文)   http://wiki.nginx.org/Configuration 环境:FreeBSD8.0+Nginx1.0.10_1 配置文件位置:   /usr/local/etc/nginx(所有配置文件都在此文件夹) 可执行文件位置: /usr/local/sbin/nginx 服务所在位置:   /usr/
joshua317
2018/04/16
1.4K0
Nginx软件优化
1.1 Nginx优化分类 安全优化(提升网站安全性配置) 性能优化(提升用户访问网站效率) 1.2 Nginx安全优化 1.2.1 隐藏nginx版本信息优化 官方配置参数说明:http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens 官方参数: Syntax: server_tokens on | off | build | string; Default: server_tokens on; Context: http
惨绿少年
2018/03/30
1.4K0
深入解读nginx配置文件
在上一篇文章中,主要是演示了在centos服务器中nginx的安装部署,这篇文章我们继续深入解释下nginx的配置文件。
运维朱工
2021/12/01
3.6K0
Nginx配置文件详细说明
在此记录下Nginx服务器nginx.conf的配置文件说明。 #运行用户 user www-data;     #启动进程,通常设置成和cpu的数量相等 worker_processes  1; #全局错误日志及PID文件 error_log  /var/log/nginx/error.log; pid        /var/run/nginx.pid; #工作模式及连接数上限 events {     use   epoll;             #epoll是多路复用IO(I/O Multipl
艳艳代码杂货店
2021/10/29
5980
Nginx实例与localtion匹配规则
〇、官方手册 一、反向代理 docker run --name nginx -d -p 80:80 -v /nginx/html:/usr/share/nginx/html -v /nginx/nginx.conf:/etc/nginx/nginx.conf nginx 下面为容器的端口!!!!!! # 运行用户 #user nobody; # 启动进程,通常设置成和cpu数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.lo
wuweixiang
2019/03/12
9380
nginx配置文件参数详解
这年头原创技术博文真心难写,不可能每天都有灵感,也不可能每天都出问题。而且技术教程也非常全面,不管是百度一下,你就知道,还是谷歌一把,你就找到,基本要啥有啥,只有你想得到,没有你搜不到。。。如果突然发现搜不到了,那恭喜你,你又可以来个原创研究项目了! 之所以开篇吐槽这么多,也是因为张戈今天确实没东西写,又不想转载, 就来点伪原创吧!主要是更换域名之后,确实需要很长一段时间的原创文章来取得搜索引擎的信任!比如,大前天完全转载的《10 个超有趣的 Linux 命令》,百度就完全视而不见,而前天完全原创的《百度开
张戈
2018/03/23
1.4K0
Nginx主配置参数详解,Nginx配置网站
a.上面博客说了在Linux中安装nginx。博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html
用户8682940
2021/12/02
1.4K0
Nginx的配置文件
其中重点是: proxy_pass http://mytest; mytest是定义了两个服务器,用作负载均衡。
JQ实验室
2022/02/09
4140
Nginx系列(二):Nginx 配置文件说明
从配置文件开始到 events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行 Nginx服务器的用户(组)、允许生成的 worker process数,进程PD存放路径、日志存放路径和类型以及配置文件的引入等。
鳄鱼儿
2024/05/21
2270
Nginx核心配置文件介绍
Nginx.conf的位置: /usr/local/nginx/conf/nginx.conf   默认的Nginx服务器配置文件都存放在安装目录的conf中,主要的配置文件名为nginx.conf.   Nginx的核心模块有是Main和Events,还包括Http模块、邮件模块、还可以支持第三方模块等
用户4919348
2020/05/21
9360
一篇不大靠谱的nginx 1.11.10配置文件
网站是前后端分离,前端打包站点部署需要自力更生,为了避免跨域问题. 选择了nginx这个知名的反向代理服务器. 这里不探究安装这种问题。。。
CRPER
2018/08/28
4760
Nginx参数配置说明
#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #工作模式及连接数上限 events { #epoll是多路复用IO(I/O Multiplex
小柒2012
2018/04/13
1.1K0
配置文件解读
源码编译安装方式:在安装目录下的conf目录下,比如我的安装目录是/usr/local/nginx,那么他的配置文件就在/usr/local/nginx/conf目录下。
用户8639654
2021/08/30
7400
相关推荐
nginx配置文件详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验