热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx.conf内容详细说明

usernobodynobody;#nginx启动使用的默认用户,第一个nobody为用户名,第二个为用户组#nobody是linux中权限较低的一个普通用户,但不能通过该账号登录系统worker_processes1;#指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。#根据
user  nobody nobody;  # nginx启动使用的默认用户,第一个nobody为用户名,第二个为用户组
# nobody是linux中权限较低的一个普通用户,但不能通过该账号登录系统 worker_processes  1;  # 指定了 Nginx 要开启的进程数。每个Nginx 进程平均耗费10M~12M内存。
# 根据经验,一般指定一个进程足够了,如果是多核CPU,建议指定和CPU的数量一样的进程数即可
# 日志错误级别有stderr, emerg, alert, crit, error, warn, notice, info, debug
# 在源码中分别对应0-8级别,其中debug日志最为详细,stderr最少
# nginx只认第一有效设置,不能使用这样的配置  error_log logs/debug.log debug | info;
error_log  logs/error.log;          # nginx 错误日志 相对于安装路径,默认为/usr/local/nginx/
error_log  logs/error.log  notice;  # nginx 记录警告日志 相对于安装路径,默认为/usr/local/nginx/
error_log  logs/error.log  info;    # nginx 记录信息日志 相对于安装路径,默认为/usr/local/nginx/
pid        logs/nginx.pid;    # 来指定进程id的存放位置 相对于安装路径,默认为/usr/local/nginx/
worker_rlimit_nofile 65535;   # 用于绑定worker进程和CPU,Linux内核 2.4以上可用
# 这个指令是指当一个nginx进程打开的最多文件描述符数目,
# 理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,
# 但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致
# nginx的工作模式,及最大连接数,ulimit -n 查看 ,通过ulimit -n 2048 修改为2048
events {
    use epoll;   # 指定Nginx的工作模式,支持的工作模式有select、poll、kqueue、epoll、rtsig 和/dev/poll
# select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,
# 不同的是 epoll用在 Linux 平台上,而kqueue用在BSD系统中。
# 对于Linux系统,epoll工作模式是首选
    worker_connections  1024;  # 指定nginx每个进程的最大连接数,这是系统参数,一般默认为1024,而nginx的处理能力远不止1024
# 最大客户端连接数由 worker_processes和 worker_connections决定,即:max_clients = worker_processes * worker_connections
# 在作为反向代理时,max_clients 变为:max_clients = worker_processes * worker_connections/4
}
# HTTP服务配置
http {
    include       mime.types;                 # 引用同目录下的mime.types文件,可以减少主配置文件的复杂度
    default_type  application/octet-stream;   # default_type属于http核心模块指令,这里设定默认类型为二进制流,如文件类型为定义时使用这种方式
     # Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
     # main为此日志输出格式的名称,可以在下面的access_log指令中引用
    access_log  logs/access.log  main buffer=32K;  # 设置Nginx被访问的日志路径、格式和缓存大小,相对于安装路径,默认为/usr/local/nginx/
# 日志格式默认值是combined,缓存大小默认是off
# 如果不想记录日志,可以使用“access_log  off;”指令关闭日志记录
    client_max_body_size  20m;   # 用来设置允许客户端请求的最大的单个文件字节数,默认值为1M
    client_header_buffer_size    32K;   # 用于指定来自客户端请求头的 headerbuffer大小
# 对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的 COOKIE,
# 可以增加缓冲区大小。这里设置为32K,默认值为1K
    large_client_header_buffers  4 32K; # 用来指定客户端请求中较大的消息头的缓存最大数量和单位大小
# 这里表示设置最大缓存量为4个32K
sendfile        on;  # 用于开启高效文件传输模式,默认值是off
    tcp_nopush      on;  # 用于控制TCP链接是否推送,默认值是on
    tcp_nodelay     on;  # 用于控制TCP链接是否延迟,默认值是on
    # 将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞
    client_header_timeout  10;  # 设置客户端请求头读取超时时间,单位:秒,默认值为60
    client_body_timeout    10;  # 设置客户端请求主体读取超时时间,单位:秒,默认值为60
send_timeout          10;   # 指定响应客户端的超时时间,单位:秒,默认值为60
# 这个超时仅限于两个连接活动之间的时间,
# 如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接
    keepalive_timeout  65;  # 保持连接时间,单位:秒,超过该时间,服务器会关闭连接
# HttpGzip模块配置,这个模块支持在线实时压缩输出数据流
    gzip  on;    # 用于设置开启或者关闭gzip模块,on表示开启GZIP压缩,实时压缩输出数据流,默认值为off
    gzip_min_length  1k;   # 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。
# 默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大
    gzip_proxied     any;  #
    gzip_buffers     4    16k;  # 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流
# 这里表示申请4个单位为16K的内存作为压缩结果流缓存
# 如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果
    gzip_http_version    1.1;   # 用于设置识别HTTP协议版本,默认值是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可
    gzip_comp_level    1;     #  gzip压缩比(1——9),1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)默认值是1
    gzip_types   text/plain;  # 匹配MIME类型进行压缩,无论是否指定, “text/html”类型总是会被压缩的
    gzip_vary    on;          # 让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据
# Nginx负载均衡配置
    upstream mywebsite.net{ # upstream指令指定了一个负载均衡器的名称mywebsite.net,可以随便指定,默认值为空
ip_hash;    # Nginx负载均衡调度算法,不设置时为轮询(算法),Nginx总共支持四种方法:
# 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,
# 故障系统被自动剔除,使用户访问不受影响。采用此算法时,可以设置Weight(轮询权值),
# Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下
# 例如:server 192.168.0.110:80 weight=5;
# ip_hash:每个请求按访问 IP 的 hash 结果分配,这样来自同一个IP 的访客固定访问一个后端服务器,
# 有效解决了动态网页存在的 session共享问题
# fair:比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,
# 也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx 本身是不支持 fair的,
# 如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
# url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。
# Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的 hash软件包
        server 192.168.0.110:80;   # 指定后端服务器的IP地址和端口
        server 192.168.0.119:80  down;  # down状态表示当前的server暂时不参与负载均衡
        server 192.168.0.120:8009  backup;  # backup状态表示预留的备份机器。当其他所有的非 backup机器出现故障或者忙的时候,
# 才会请求backup机器,因此这台机器的压力最轻,调度算法为ip_hash时,不能为该状态
        server 192.168.0.211:8080   max_fails=3  fail_timeout=20s;  # max_fails,允许请求失败的次数,默认为 1
# 当超过最大次数时,返回proxy_next_upstream  模块定义的错误
# fail_timeout,在经历了max_fails次失败后,暂停服务的时间
# max_fails可以和fail_timeout一起使用
        # 注意: 当负载调度算法为 ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup
}
# server虚拟主机配置
    server {
listen       80;   # 监听的端口
        server_name  192.168.0.110 www.mywebsite.net;  # 指定IP 地址或者域名,多个域名之间用空格分开
        charset koi8-r;  # 设置网页的默认编码格式
        access_log  logs/host.access.log  main;  # 根据访问域名生成对应的访问日志
          location / {
root   html;    # 根目录,相对于安装路径,默认为/usr/local/nginx/
index  index.html;   #  默认主页,在根目录下
open_file_cache max=1000 inactive=20s;
open_file_cache_valid    30s;
open_file_cache_min_uses 2;
open_file_cache_errors   on;
        }
          location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root images;
          }
          location /lua {
lua_code_cache off;
content_by_lua_file /usr/local/nginx/lua/test.lua;
          }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
root   html;
        }
    }
}

推荐阅读
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 探索OpenWrt中的LuCI框架
    本文深入探讨了OpenWrt系统中轻量级HTTP服务器uhttpd的工作原理及其配置,重点介绍了LuCI界面的实现机制。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ... [详细]
  • 前端技术分享——利用Canvas绘制鼠标轨迹
    作为一名前端开发者,我已经积累了Vue、React、正则表达式、算法以及小程序等方面的技能,但Canvas一直是我的盲区。因此,我在2018年为自己设定了一个新的学习目标:掌握Canvas,特别是如何使用它来创建CSS3难以实现的动态效果。 ... [详细]
  • 利用Cookie实现用户登录状态的持久化
    本文探讨了如何使用Cookie技术在Web应用中实现用户登录状态的持久化,包括Cookie的基本概念、优势及主要操作方法,并通过一个简单的Java Web项目示例展示了具体实现过程。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 页面预渲染适用于主要包含静态内容的页面。对于依赖大量API调用的动态页面,建议采用SSR(服务器端渲染),如Nuxt等框架。更多优化策略可参见:https://github.com/HaoChuan9421/vue-cli3-optimization ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
author-avatar
佩人永雪3
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有