Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx配置介绍与优化

nginx配置介绍与优化

作者头像
ianzhi
发布于 2019-07-31 06:18:38
发布于 2019-07-31 06:18:38
41100
代码可运行
举报
文章被收录于专栏:LNMP开发那些事LNMP开发那些事
运行总次数:0
代码可运行

nginx的配置有很多,这里详细介绍一下nginx的配置,并且提供了配置建议设置的值,以提高服务器性能。

下面以一个nginx配置文件为例,介绍nginx的配置项目、含义和优化建议。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 运行用户,nginx启动后会启动一个主进程和多个worker进程。
# 主进程主要用来管理worker进程,worker进程用来处理请求。
# 这里配置worker进程的启动用户。
user www www;

# worker进程数量
# 作者建议一个进程就足够了,可以把连接数设置的很大。
# 如果文件大小大于内存大小很多,可以增加进程数,减少IO对性能带来的影响。
# 建议与CPU数量匹配,最大不大于CPU数量的两倍。
# 超过八个会导致稳定性降低。
worker_processes 1;

# 绑定worker进程的处理cpu,以充分利用多核性能。
# 值均为二进制,有多少个核就有多少位,0代表开启内核,1代表关闭内核。
# 01010101代表开启第1357内核。
worker_cpu_affinity 1;

# 全局错误日志文件和pid文件位置
# error_log logs/error.log;
# error_log logs/error.log notice;
# error_log logs/error.log info;
# pid logs/nginx.pid;

# 事件处理方式和连接数上限
events {
    # 可选值:select,poll,epoll,kqueue。
    # select,poll为标准事件模型,kqueue和epoll为高效模型。
    # kqueue适用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X。
    # epoll io多路复用,适用于linux内核版本2.6及以后的系统。
    # linux服务器强烈建议使用epoll,除非内核不支持并且因为某些原因无法升级。
    use epoll;

    # 单个worker进程的最大并发连接数。
    # 总并发数=worker_processes * worker_connections。
    # 并发连接总数应小于系统可以打开的文件句柄总数。
    # 使用cat /proc/sys/fs/file-max来查看系统可以打开的文件句柄数
    worker_connections 102400;
}

http {
    # 设置mime类型
    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_logs/access.log

    # 可选值on或者off。
    # 是否在内核空间完成文件发送,避免先read,后write。
    # 建议开启。
    sendfile on;
    # 是否等待到某种程度再统一发送数据包,会提高服务器性能,但会提高延迟。建议开启
    # 开启sendfile会默认启用此配置,不必指定配置。
    # tcp_nopush on;
    # 请求小数据包直接返回不等待,不建议开启,会降低性能,但会降低延迟,不要与上一个配置一同开启。
    # tcp_nodelay on;

    # 连接超时时间。
    # 第二个参数可选,设置keep-alive头信息,不填写将不设置keep-alive头信息。
    # 建议默认即可。
    keepalive_timeout 65 65;

    # 是否开启gzip。
    # 极大的压缩页面内容,会提高cpu计算开销,但是会加快加载速度。
    # 建议开启。
    gzip on;

    # gzip压缩起点。
    # 建议1k即可。
    gzip_min_length 1k;

    # gzip压缩级别。
    # 可选值1-9,数字越大压缩级别越高,CPU占用越高。
    # 建议1-5,超过5压缩比率提高很少。
    gzip_comp_level 4;

    # gzip压缩类型。
    # 仅压缩指定的类型,无论是否指定,text/html都会压缩。
    # 可选值可以参考mime.types文件。
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript;

    # 是否先检查gzip文件是否存在。
    # 开启以后将保留gzip后的问题,访问时先查找是否有gzip文件,如果有直接返回,所以可以降低CPU压力,但是会提高磁盘占用。压缩级别高并且磁盘容量很大可以开启。
    gzip_static on;

    # 添加gzip头,提醒接收方内容经过了gzip压缩。对于不支持gzip的客户端浏览器有用。
    # 建议开启。
    gzip_vary on;

    # 设置gzip使用缓存空间的大小,第一个参数指定向系统申请缓存空间的个数,第二个参数指定单个缓存空间的大小。
    # 建议默认即可,不需要单独指定。
    gzip_buffers 2 4k;

    # 虚拟主机配置
    server {
        # 指定监听的ip和端口
        # 如果仅填写ip,root用户启动将默认为80端口,非root用户默认为8080
        # 如果仅填写port,将监听所有接口的这个端口
        # 服务器间转发请求,也可以设置Unix socket路径
        listen 80;

        # 指定访问的域名,只有当ip,port和server_name均匹配时,才会使用此server配置。
        # 可以指定多个域名,根据需要配置即可。
        server_name www.example.com;

        # 此虚拟主机的网站根目录地址。
        # 根据需要填写即可。
        root /var/www/example;
    }
}

更多nginx使用技巧,请查看本博客的《NGINX》分类。

文章作者ianzhi,原文地址:https://cloud.tencent.com/developer/article/1476943

文章版权归作者所有,转载请保留此声明。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-10,如有侵权请联系 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大家都听说过吧,我就不详细介绍了。我这里就列一下,nginx中nginx.conf配置文件每个配置项的详细解释。
业余草
2019/01/21
1.1K0
Nginx配置性能优化
大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了。而且,在大多数情况下,一个常规安装的Nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出Nginx的性能,你必须更深入一些。在本指南中,我将解释Nginx的那些设置可以微调,以优化处理大量客户端时的性能。需要注意一点,这不是一个全面的微调指南。这是一个简单的预览——那些可以通过微调来提高性能设置的概述。你的情况可能不同。
流柯
2018/08/30
7480
Nginx配置文件(nginx.conf)配置详解
仅做参考 user root; #Nginx用户及组:用户 组。window下不指定 worker_processes 1; #工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。 error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; #错误日志:存放路径。 pid logs/nginx.pid; #pid(进程标识符):存放路径。
Diuut
2022/11/22
5.4K0
Nginx配置模块详解及多站点共用80端口案例
main(全局设置) http ( ) upstream(负载均衡服务器设置) server(主机设置) location(URL匹配特点位置的设置)
菲宇
2022/12/21
2.6K0
Nginx配置模块详解及多站点共用80端口案例
nginx配置文件参数详解
这年头原创技术博文真心难写,不可能每天都有灵感,也不可能每天都出问题。而且技术教程也非常全面,不管是百度一下,你就知道,还是谷歌一把,你就找到,基本要啥有啥,只有你想得到,没有你搜不到。。。如果突然发现搜不到了,那恭喜你,你又可以来个原创研究项目了! 之所以开篇吐槽这么多,也是因为张戈今天确实没东西写,又不想转载, 就来点伪原创吧!主要是更换域名之后,确实需要很长一段时间的原创文章来取得搜索引擎的信任!比如,大前天完全转载的《10 个超有趣的 Linux 命令》,百度就完全视而不见,而前天完全原创的《百度开
张戈
2018/03/23
1.4K0
Nginx 参数配置相关
对Nginx配置的点滴学习总结,主要目的在于分析Nginx与性能相关的一些参数设置,以便性能调优时选择最优配置
授客
2019/09/11
7530
nginx配置
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。 5、location块:配置请求的路由,以及各种页面的处理情况。
zhangjiqun
2024/12/16
1970
nginx配置
深入解读nginx配置文件
在上一篇文章中,主要是演示了在centos服务器中nginx的安装部署,这篇文章我们继续深入解释下nginx的配置文件。
运维朱工
2021/12/01
3.9K0
nginx启动和配置
1.命令行参数 -c </path/to/config> 为 Nginx 指定一个配置文件,来代替缺省的。路径应为绝对路径 -t 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。 -v 显示 nginx 的版本。 -V 显示 nginx 的版本,编译器版本和配置参数。 2.启动,重启和关闭 启动: nginx -c /xxxx/nginx/nginx.conf 关闭: ps -aux|grep nginx kill -9 nginx主进程号 3
代码改变世界-coding
2018/07/03
1.6K0
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
Nginx配置文件nginx.conf中文详解
#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; #进程文件 pid /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统
老七Linux
2018/05/09
1.3K0
Nginx配置文件及模块
Nginx是一个基于c语言开发的高性能http服务器及反向代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
HaydenGuo
2019/12/12
5980
Nginx配置文件及模块
Nginx主配置参数详解,Nginx配置网站
a.上面博客说了在Linux中安装nginx。博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html
用户8682940
2021/12/02
1.5K0
003.Nginx原理和配置
1. Nginx原理 对于每个Worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销 采用独立的进程,互相之间不会相互影响,一个进程退出后,其他进程还在工作,服务不会中断,master进
CoderJed
2020/04/09
4770
nginx的配置
常用的命令 nginx -h # 帮助 nginx -t # 验证配置文件的正确性 nginx -v # 查看nginx的版本 nginx -c filename # 按指定的配置文件启动,默认的路径conf/nginx.conf nginx -s reload # 重新载入配置文件 nginx -s reopen # 重启nginx nginx -s stop # 关闭nginx nginx -s quit # 退出 nginx的配置文件的详解 nginx的配置分为四个部分
匿名用户的日记
2021/12/14
6920
Nginx配置文件的理解
user www www; #定义Nginx运行的用户和用户组 worker_processes auto; #nginx进程数,建议设置为等于CPU总核心数,这里auto为自动调整的意思 worker_cpu_affinity auto; #对于具有多颗CPU的服务器,Nginx通过设置worker_cpu_affinity参数,即可轻松实现控制进程平均分配到多颗CPU上 error_log logs/error.log; #全局错误日志定义类型,[ d
小俊丶Eternally
2018/05/11
1.5K7
Nginx配置文件的理解
Nginx(2)——通用配置
user 设置Nginx服务的系统用户 worker_processes 工作进程数 和硬件CPU核数一致 error_log nginx的错误日志 pid nginx服务启动时候pid woker_connections 每个进程允许最大连接数 use 内核模型select epoll
羊羽shine
2019/05/29
4990
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
8630
【Nginx]配置文件详解
#定义Nginx运行的用户和用户组 #user nobody; user root; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 1; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #
landv
2019/07/23
1.7K0
相关推荐
nginx配置文件详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验