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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CDN的作用与基本过程
CDN,Content Distribute Network,可以直译成内容分发网络,CDN解决的是如何将数据快速可靠从源站传递到用户的问题。用户获取数据时,不需要直接从源站获取,通过CDN对于数据的分发,用户可以从一个较优的服务器获取数据,从而达到快速访问,并减少源站负载压力的目的。
微风-- 轻许--
2019/05/29
3.3K1
关于CDN的原理、术语和应用场景那些事
关于CDN,想必你一定看过很多官方的解释。今天,将用一篇3844字的文章,来带你了解CDN的诞生、术语、原理、特征以及应用场景,看完这篇文章,相信你将会对CDN这项互联网基础设施有更加透彻的了解。
PHP开发工程师
2021/05/13
2.1K0
关于CDN的原理、术语和应用场景那些事
爱奇艺CDN运维平台实践
CDN的全称是Content Delivery Network,即内容分发网络。它是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
肉眼品世界
2021/10/26
1.7K0
爱奇艺CDN运维平台实践
CDN 为什么这么设计?
过去几十年,计算机网络把几乎全世界的计算机都连接了起来,我们只要把静态资源和动态的代码部署到服务器上,然后启动服务监听某个端口,这样世界各地的计算机就都能访问该网站。
德迅云安全--陈琦琦
2022/07/03
2.1K0
全局负载均衡、CDN内容分发的原理与实践
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
玄姐谈AGI
2021/07/29
1.9K1
域名解析和cdn 原理
用户访问未使用CDN缓存网站的过程为:  1)、用户向浏览器提供要访问的域名;  2)、浏览器调运维
Java架构师必看
2021/03/22
3.1K0
springboot第40集:架构师写的代码,那叫一个优雅
据了解,2018年1月,阿里云为虎牙提供了边缘节点服务(ENS)。基于阿里云ENS,可以轻松地将业务模块放到边缘运行,在主播的推流时,实现就近节点进行转码和分发,同时支持了高并发实时弹幕的边缘分发。在获得网络低时延的同时,减少了对中心的压力,节省了30%以上的中心带宽成本,并且实现了边缘节点网络连接小于5毫秒延时,提升了主播上行质量,以及用户成功连接占比等数指标,有效提升了用户观看体验。ENS中最主要的技术就是CDN。
达达前端
2023/10/08
2650
springboot第40集:架构师写的代码,那叫一个优雅
CDN是什么?
内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。
德迅服务器抗D盾
2023/11/10
4440
CDN是什么?
天天说架构,那CDN到底是什么?
浏览器输入域名后,DNS将域名解析为地址,然后请求该地址,返回一个网页。 这个过程就像你买个东西,先查找商店位置,然后找到想要的商品,拿回家。
JavaEdge
2021/10/18
7500
一文读懂CDN
根据《全球互联网现象报告》,流媒体视频占互联网带宽流量的53.7%,OTT内容的快速增长给现有的基础设施带来了压力,CDN加速变得尤为重要。 4月,谷歌推出了Media CDN 服务,这是一个使用与 YouTube 相同的基础设施来交付内容的平台,旨在为广大客户提供全方位的自动化内容交付体验、让服务内容更加靠近于终端用户。Media CDN 加入了 谷歌 的 Web 和 API 加速 CDN 产品组合,相比于其他的CDN,谷歌声称Media CDN 具有独特之处,例如为个人用户和网络条件量身定制的交付协议
SDNLAB
2022/05/23
2.5K0
一文读懂CDN
3分钟带你了解到底什么是CDN?
通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
网络安全自修室
2022/09/01
18.6K0
3分钟带你了解到底什么是CDN?
044. 使用 CDN 实现应用的缓存和加速
1. CDN 简介 ---- CDN 的全称是 Content Delivery Network,即内容分发网络。 CDN 是构建在网络之上的内容分发网络。 CDN 使用户就近获取所需内容,降低网络拥
山海散人
2021/03/03
2.7K0
044. 使用 CDN 实现应用的缓存和加速
一文带你弄懂 CDN 技术的原理
对于 CDN 这个东西,相信大家都有耳闻,感觉既陌生但又熟悉。最近深入了解了一下 CDN,这才发现原来 CDN 如此重要!今天就跟大家科普一下 CDN 是什么,以及为啥要有 CDN,最后再讲一下 CDN 的工作过程!
陈树义
2022/09/19
1.7K0
网络协议 18 - CDN:家门口的小卖铺
    到现在为止,我们基本上已经了解了网络协议中的大部分常用协议,对于整个 HTTP 请求流程也较为熟悉了。从无到有后,我们就要考虑如何优化“有”这个过程,也就是我们常见的请求优化。而现在的技术栈中,CDN 是最常用的一种方式。
北国风光
2019/04/11
9370
网络协议 18 - CDN:家门口的小卖铺
科普 | 到底什么是CDN?
可是,大家在追剧的时候,有没有想过一个问题——为什么有时候明明自己的网速很快,但观看视频时,仍然卡顿?
CloudBest
2021/01/05
1.5K0
科普 | 到底什么是CDN?
前端性能优化之全面了解CDN
CDN(Content Delivery Network,内容分发网络)是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。
前端老鸟
2022/03/07
1.2K0
前端性能优化之全面了解CDN
一篇文章弄懂CDN技术原理
概述 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰。
java思维导图
2018/11/08
2.3K0
内容分发网络 CDN
腾讯云提供了 CDN 服务:CDN 内容分发网络 _CDN内容加速_CDN加速-腾讯云 (tencent.com)
真正的飞鱼
2023/03/01
3.8K0
内容分发网络 CDN
cdn技术原理
作者:IT世界,来自:www.it.com.cn 1. 前言   Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰。解决方案就是在网络传输上利用缓存技术使得Web服务数据流能就近访问,是优化网络数据传输非常有效的技术,从而获得高速的体验和品质保证。   网络缓存技术,其目的就是减少网络中冗余数据的重复传输,使之最小化,将广域传输转
架构师小秘圈
2018/04/02
4.5K0
cdn技术原理
到底什么是CDN?
可是,大家在追剧的时候,有没有想过一个问题——为什么有时候明明自己手机的网速很快,但观看视频时,仍然卡顿?
鲜枣课堂
2019/07/20
2.2K0
相关推荐
CDN的作用与基本过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验