Nginx配置文件、优化详解

上篇《编译安装nginx》已将nginx安装好,这篇写nginx配置文件和部分优化参数。

查看nginx的配置文件路径,可以使用nginx配置文件检查命令nginx -t:

1 [[email protected] ~]# nginx -t
2 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok  #编译安装后的nginx配置文件路径3 nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens

nginx配置文件有4个部分:

  main,全局设置,其它部分与该部分设置有关

  server,主机服务设置,主要用于指定虚机的主机域名、ip和端口
  location,URL匹配的定位,代理定位设置
  upstream,上游服务器集群,负载均衡集群配置
这四个部分,server继承main,location继承server;upstream不继承指令也不被继承。

nginx配置文件:

 1 vim /etc/nginx/nginx.conf
 2
 3 user  nginx nginx;         #nginx的用户和用户组,默认为nobody,建议均修改为nginx
 4 worker_processes  auto;    #nginx进程数,建议按照CPU数目来指定,一般为它的倍数,如2个4核记为8.也可设置为auto,可以和worker_cpu_affinity auto配合使用
 5 #worker_cpu_affinity auto;
 6 worker_rlimit_nofile 65535;    #nginx进程打开的最多文件描述,理论最多能打开能打开ulimit -n ÷ nginx进程数,由于nginx分配请求并不机及其均衡,假设填写10240,当总并发量达到3-4W时进程可能超过10240,因此一般与ulimit -n的数值保持一致,
 7
 8 #日志文件设置,错误日志定义类型有debug | info | notice | warn | error | crit
 9 #access_log off;
10 error_log  /var/log/nginx/error.log warn;
11 #error_log  /var/log/nginx/error.log crit;
12 pid        /var/run/nginx.pid;
13
14 #工作模式与连接数上限
15 events {
16         use epoll;    #使用epoll的i/o模型参考时间模型use [ kqueue | rtsig | epoll | /dev/poll | select | poll ],nginx针对不同的操作系统有不同的事件模型,标准事件模型包括select和poll,若当前系统不存在更有效的方法,nginx会选择select或poll;高效事件模型包括kqueue和Epoll等
17         worker_connections 20480;    #每个进程允许的最多连接数。理论上每台nginx的最大连接数为worker_processes × worker_connections
18         #multi_accept on;    #If multi_accept is disabled, a worker process will accept one new connection at a time. Otherwise, a worker process will accept all new connections at a time. The directive is ignored if kqueue connection processing method is used, because it reports the number of new connections waiting to be accepted.如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。如果nginx使用kqueue连接方法,那么这条指令会被忽略,因为这个方法会报告在等待被接受的新连接的数量。
19 }
20
21 #http服务设定
22 http {
23     #文件扩展名和文件爱类型映射表,include是个主模块指令,可以将配置文件拆分并引用,减少配置文件的复杂度。
24     include       /etc/nginx/mime.types;
25     default_type  application/octet-stream;        #默认文件类型
26         server_tokens off;    #启用或禁用错误页或者服务响应头部的nginx版本号,格式有on|off|bulit,默认为on
27         sendfile        on; #指定是否使用sendfile系统调用来传输文件。默认为off,sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。
28         tcp_nopush      on; #启用或禁用freebsd上的tcp_nopush socket选项或linux上的tcp_cork socket选项。这些选项仅在使用sendfile时启用。启用该选项允许在Linux和FreeBSD 4*上,在一个数据包中发送响应头和文件开头。以完整的数据包发送文件。。
29         tcp_nodelay     on;    #启用或禁用TCP_nodelay选项的使用。当连接转换为keep alive状态时,将启用该选项。此外,它在ssl连接、无缓冲代理和websocket代理上启用。
30         #charset UTF-8;    #字符集
31
32
33         resolver 223.5.5.5 valid=100s;     #上游服务器的名称解析为地址解析的名称服务器,参数选项[valid=time] [ipv6=on|off] [status_zone=zone] valid设置DNS缓存失效时间;地址可以指定为域名或IP地址,以及可选端口(1.3.1、1.2.2)。如果未指定端口,则使用端口53。名称服务器以循环方式查询。
34         resolver_timeout 30s;  #超时时间
35
36         server_names_hash_bucket_size 128;    # 哈希表的存储大小,默认取决于处理器 。为了快速处理静态数据集,比如服务器名、map指令的值、mime类型、请求头字符串的名称,nginx使用哈希表。在启动和每次重新配置期间,nginx选择哈希表的最小可能大小,使得存储具有相同哈希值的键的bucket大小不超过配置的参数(hash bucket size)。表的大小用桶表示。调整将继续,直到表大小超过hash max size参数。大多数散列都有相应的指令,允许更改这些参数,例如,对于服务器名称散列,它们是服务器名称散列最大大小和服务器名称散列存储桶大小。hash bucket size参数与处理器缓存线大小的倍数大小对齐。这通过减少内存访问的数量,加快了在现代处理器上哈希中的密钥搜索。如果hash bucket size等于一个处理器的缓存线大小,那么在最坏的情况下,密钥搜索期间的内存访问次数将为两次-首先计算bucket地址,然后在bucket内的密钥搜索期间进行第二次访问。因此,如果nginx发出请求增加hash max size或hash bucket size的消息,那么应该首先增加第一个参数。
37         client_header_buffer_size 32k; #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。
38         large_client_header_buffers 4 512k;#设置用于读取大客户请求报头的缓冲区的最大数量和大小。请求行不能超过一个缓冲区的大小,否则会将414(请求uri太大)错误返回给客户端。请求头字段也不能超过一个缓冲区的大小,否则400(错误请求)错误将返回给客户端。缓冲区只按需分配。默认情况下,缓冲区大小等于8K字节。如果在请求处理结束后连接转换为保持活动状态,则释放这些缓冲区。
39         client_max_body_size 300m;    #客户端最大上传文件大小
40         client_body_buffer_size  512k;#客户端缓冲区大小
41
42         keepalive_timeout  30; #客户端连接保持打开的超时时间,0表示禁用客户端连接,
43
44         proxy_connect_timeout    180; #单位为s,后端服务器连接的超时时间_发起握手等候响应超时时间
45         proxy_read_timeout       180; #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
46         proxy_send_timeout       180; #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
47         proxy_buffer_size        256k;
48         proxy_buffers            8 128k;
49         proxy_busy_buffers_size 256k;
50         proxy_temp_file_write_size 256k;
51         proxy_max_temp_file_size 600m;

先写到这,工作来了。

原文地址:https://www.cnblogs.com/ajunyu/p/11670753.html

时间: 2024-07-28 18:00:56

Nginx配置文件、优化详解的相关文章

Nginx配置文件优化详解

Nginx配置文件优化详解 对nginx进行优化是重点也是难点,这里给出一些常用的优化措施,以及相关参数的所代表的意思.有些参数需要结合公司服务器进行设置. 全局变量的优化: #定义Nginx运行的用户和用户组user  www  www: #启动进程,通常设置成和cpu的数量相等 worker_processes  8: #为每个进程分配cpu. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 

MySQL-5.5.32 配置文件优化详解

MySQL-5.5.32 配置文件优化详解============================== [TOC] # 一.配置文件说明 > MySQL-5.5.32是Mysql5.5系列中最后一个版本,也是最后一个有配置文件的版本,为什么这么说呢,用过5.6的博友都知道,在mysql5.6中已经不提供配置文件选择,只有一个默认的配置文件,好了,我们今天说的是5.5.32这个版,就不和大家说5.6了,下面我们来具体说一下,mysql5.5.32中,提供可选的几个配置文件, * my-small.

nginx配置项优化详解

(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l [[email protected]~]# vi/usr/local/nginx1.10/conf/nginx.conf worker_processes  4; [[email protected]~]# /usr/local/nginx1.10/sbin

Nginx配置项优化详解(转)

(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l [root@lx~]# vi/usr/local/nginx1.10/conf/nginx.conf worker_processes  4; [root@lx~]# /usr/local/nginx1.10/sbin/nginx-s reload [roo

nginx 配置优化详解

# nginx不同于apache服务器,当进行了大量优化设置后会魔术般的明显性能提升效果 # nginx在安装完成后,大部分参数就已经是最优化了,我们需要管理的东西并不多 #user nobody; #阻塞和非阻塞网络模型: #同步阻塞模型,一请求一进(线)程,当进(线)程增加到一定程度后 #更多CPU时间浪费到切换一,性能急剧下降,所以负载率不高 #Nginx基于事件的非阻塞多路复用(epoll或kquene)模型 #一个进程在短时间内可以响应大量的请求 #建议值 <= cpu核心数量,一般高

Nginx配置文件参数详解

Nginx的配置文件为一个纯文本文件,整个配置文件以块的形式组织.main.events.http.server.location.一个http模块中可以包含多个server模块,同理一个server模块中也可以包含多个location模块.下面为Nginx的示例配置文件. #定义Nginx运行的用户和用户组 user  nobody; #nginx进程数,建议设置为等于CPU总核心数 worker_processes  1; #进程文件 pid nginx.pid; #全局错误日志定义类型,[

Nginx配置文件配置详解

http://www.jb51.net/article/69091.htm 详细 http://www.jb51.net/article/72527.htm 包括安装等详细配置 http://blog.csdn.net/tjcyjd/article/details/50695922 更详细 Nginx(engine X) 是一个高性能的 HTTP 服务器和反向代理服务器,这款软件开发的目的是为了解决 C10k 问题. Nginx 的架构利用了许多现代操作系统的特性,以实现一个高性能的 HTTP

Nginx配置文件nginx.conf中文详解(转)

######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /usr/local/nginx/logs/error.log info; #进程pid文件 pid /usr/local/nginx

Nginx 主配置文件参数详解

Nginx 主配置文件参数详解 Nginx 安装完毕后,会有响应的安装目录,安装目录里 nginx.conf 为 nginx 的主配置文件, ginx 主配置文件分为 4 部分,main(全局配置).server(主机设置).upstream(负载均衡 服务器设)和 location(URL 匹配特定位置的设置),这四者关系为:server 继承 main, location 继承 server,upstream 既不会继承其他设置也不会被继承. 一.Nginx 的 main(全局配置)文件 [

Nginx配置文件nginx.conf中文详解(转载)

请参考:http://wiki.nginx.org/Main #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log ar/loginx/error.log info; #进程文件 pid ar/runinx.pid; #一个nginx进程打开的最多文件描述符