文档章节

Nginx配置

是江山
 是江山
发布于 2017/08/16 10:05
字数 2520
阅读 10
收藏 0

#1、Nginx配置文件

主配置文件:nginx.conf以及include conf.d/*.conf

配置指令 必须以分号结尾

directive value1 [value2,...];

支持使用变量,变量类型: 内置变量 自定义变量方法:


set variable_name value;

引用变量:


$variable_name

#2、nginx.conf配置文件结构


main block; # 全局配置
events {
    ... # 事件驱动相关配置
}
http {
    ... # http协议相关配置
    server {
        ... # server块

        location {
            ... # location配置块
        }
    }
}

#3、全局配置参数

##配置指令类别

  • 正常运行必备的配置;
  • 优化性能的配置;
  • 用于调试、定位问题的配置;

##正常运行必备的配置 ###user指令 用于指定运行worker进程的用户和组; 配置格式:

Syntax: user user [group];
Default: user nobody nobody;
Context: main

示例:

user nginx nginx;

###pid /PATH/TO/PID_FILE 指定nginx进程pid文件的路径; 配置格式:

Syntax: pid file;
Default: pid nginx.pid;
Context: main

示例:

pid /var/run/nginx/nginx.pid;

###worker_rlimit_nofile number 指定单个worker进程所能够打开的最大文件数;同时取决于”ulimit -n”所查看的系统最大文件描述符设置; 配置格式:

Syntax: worker_rlimit_nofile number;
Default: —
Context: main

示例:

worker_rlimit_nofile 65535;

性能优化相关的配置 1、worker_processes worker的进程数,通常应该为CPU的核心数减1; 配置格式: Syntax: worker_processes number | auto; Default: worker_processes 1; Context: main 示例:

worker_processes 4; 2、worker_cpu_affinity 为每个进程分配CPU的工作内核; 配置格式:

Syntax: worker_cpu_affinity cpumask ...; worker_cpu_affinity auto [cpumask]; Default: — Context: main 示例:假设当前服务器是4核CPU;

worker_cpu_affinity 0001 0010 0100 1000; 查看进程是否绑定至CPU上;

[root@Bj-1-141 nginx]# ps axo command,pid,psr|grep nginx|grep -v grep nginx: master process nginx 14841 3 nginx: worker process 15407 0 nginx: worker process 15408 1 nginx: worker process 15409 2 nginx: worker process 15410 3 注意:系统上CPU编号从0开始。 3、worker_priority 调整nginx进程优先级; 配置格式:

Syntax: worker_priority nice; Default: worker_priority 0; Context: main

nice值范围

[-20,19]对应为100-139; 调试、定位问题相关配置 1、daemon 是否以守护进程方式启动nginx进程;默认为on; 配置格式: Syntax: daemon on | off; Default: daemon on; Context: main 2、master_process 是否以master/worker模型启动nginx进程; 配置格式:

Syntax: master_process on | off; Default: master_process on; Context: main 3、error_log 错误日志文件记录方式,及其日志记录级别; 配置格式:

Syntax: error_log file [level]; Default: error_log logs/error.log error; Context: main, http, mail, stream, server, location

level级别

debug, info, notice, warn, error, crit, alert 4、events配置段参数

1、worker_connections 每个worker进程所能够打开的最大连接数; 配置格式:

Syntax: worker_connections number; Default: worker_connections 512; Context: events 示例:

events { worker_connections 10240; } 2、use method 指明并发连接请求处理使用的方法; 配置格式:

Syntax: use method; Default: — Context: events 示例:

use epoll; 3、accept_mutex 启用时表示用于让多个worker轮流的、序列化的响应新请求; 配置格式:

Syntax: accept_mutex on | off; Default: accept_mutex off; Context: events 5、http配置段参数;

定义套接字相关功能 1、server 配置一个虚拟主机; server { listen PORT; server_name HOSTNAME; root /PATH/TO/DOCUMENTROOT; ... }

注意:

1.基于port的虚拟主机 listen指令要使用不同端口; 2.基于hostname的虚拟主机 server_name指令指向不同主机名; 3.基于IP的虚拟主机 listen IP:PORT 2、listen 指明监听的地址及端口; 配置格式:

listen address[:port] [default_server] [ssl] [backlog=number] [rcvbuf=size] [sndbuf=size] listen port [default_server] [ssl] default_server:默认虚拟主机; ssl:限制只能通过ssl连接提供服务; backlog:后援队列的长度,最多允许多少个网络连接同时挂起; rcvbuf:接收缓存区大小 sndbuf:发送缓冲区大小; 3、server_name 指明当前server的主机名;后面可跟一个或多个空白字符分隔的多个主机名;支持使用匹配任意长度任意字符;支持~起始的正则表达式模式字符串; 应用策略: 1.首先精确匹配; 2.左侧通配符匹配; 3.右侧*通配符匹配; 4.正则表达式模式匹配; 配置格式:

Syntax: server_name name ...; Default: server_name ""; Context: server 示例:

server_name www.codegreen.cn; server_name .codegreen.cn; server_name www.codegreen.; server_name ~^..codegreen..$; 4、tcp_nodelay 对keepalived模式下的连接是否启用TCP_NODELAY选项; 在这之前,我们先说说nagle缓存算法,有些应用程序在网络通讯的时候会发送很少的字节,比如说一个字节,那么再加TCP协议本身,实际上发的要41个字节,这样的效率时很低的。这时候nagle算法就应运而生了,它将要发送的数据放在缓存里,当积累到一定量或一定时间,在将它们发送出去。这里TCP_NODELAY就是nagle启用与否的开关,所以下面的指令的效果就是禁用nagle算法,也既不缓存数据。 配置格式:

Syntax: tcp_nodelay on | off; Default: tcp_nodelay on; Context: http, server, location 5、sendfile 是否启用sendfile机制;默认off;

定义路径相关配置 1、root 设置web资源的路径映射;用于指明用户请求的URL所对应的本地文件系统上的文档所在目录路径; 配置格式: Syntax: root path; Default: root html; Context: http, server, location, if in location 示例:

location / { root /data/site; index index.html index.htm; } 2、location 根据用户请求的uri来匹配定义的location,匹配到时,此请求被相应的location块中的指令所处理; 配置格式:

Syntax: location [ = | ~ | ~* | ^~ ] uri { ... } location @name { ... } Default: — Context: server, location =:URI精确匹配; ~:做正则表达式模式匹配,区分字符大小写; ~*:做正则表达式模式匹配,不区分字符大小写; ^~:URI的左半部分做匹配检测,不区分字符大小写;

匹配优先级:=, ^~, ~, ~*

官方示例:

location = / { [ configuration A ] } location / { [ configuration B ] } location /documents/ { [ configuration C ] } location ^~ /images/ { [ configuration D ] } location ~* .(gif|jpg|jpeg)$ { [ configuration E ] } 假如请求”www.codegreen.cn”,则会被A所匹配。请求”www.codegreen.cn/index.html”则会被B所匹配。请求”www.codegreen.cn/ducuments/ducuments.html”则会被C匹配。请求”www.codegreen.cn/images/1.gif”,则会被D所匹配。请求”www.codegreen.cn/documents/1.jpg”,则会被E所匹配。

3、alias 定义路径别名,文档映射的一种机制;仅能用于location上下文; 配置格式:

Syntax: alias path; Default: — Context: location 示例1:

location /bbs/ { alias /web/forum/; }

请求/bbs/a.jpg实际上请求的目录为/web/forum/a.jpg

示例2:

location /bbs/ { root /web/forum/; }

请求/bbs/a.jpg,实际上请求的目录为/web/forum/bbs/a.jpg

注意: root指令:给定的路径对应于location中的/uri/左侧的/; alias指令:给定的路径对应于location中的/uri/右侧的/; 4、index 设置默认主页; 配置格式:

Syntax: index file ...; Default: index index.html; Context: http, server, location 示例:

index index.php index.html index.htm; 5、error_page 根据用户请求的资源的http响应状态码实现错误页的重定向; 配置格式:

Syntax: error_page code ... [=[response]] uri; Default: — Context: http, server, location, if in location 示例:

error_page 404 /404.html; error_page 500 502 503 504 /50x.html;

注意:/404.html,是相对于location / {...}中root指定的根目录;

error_page 404 =200 /empty.gif; 这里的”=200″意思是当出现404错误状态时,在响应首部中换成200状态;如下图:

定义客户端请求的相关配置 1、keepalive_timeout 设置保持连接的超时时长,0表示禁止长连接;默认为75s; 配置格式: Syntax: keepalive_timeout timeout [header_timeout]; Default: keepalive_timeout 75s; Context: http, server, location 示例:

keepalive_timeout 30s; 2、keepalive_requests 在一次长连接上所允许请求的资源最大数量,默认为100; 配置格式:

Syntax: keepalive_requests number; Default: keepalive_requests 100; Context: http, server, location 示例:

keepalive_timeout 30s; keepalive_requests 100; 3、keepalive_disable 对哪种浏览器禁用长连接; 配置格式:

Syntax: keepalive_disable none | browser ...; Default: keepalive_disable msie6; Context: http, server, location 4、send_timeout 向客户端发送响应报文的超时时长;特别地,是指两次写操作之间的间隔时长; 配置格式:

Syntax: send_timeout time; Default: send_timeout 60s; Context: http, server, location 5、client_body_buffer_size 接收客户端请求报文的body部分的缓冲区大小;默认为16k,超出此大小时,其将被暂存到磁盘上; 配置格式:

Syntax: client_body_buffer_size size; Default: client_body_buffer_size 8k|16k; Context: http, server, location 6、client_body_temp_path 设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量; 配置格式:

Syntax: client_body_temp_path path [level1 [level2 [level3]]]; Default: client_body_temp_path path; Context: http, server, location 示例:

client_body_temp_path /var/tmp/nginx/client_temp 2 1; 对客户端请求进行限制的相关配置 1、limit_rate 限制响应客户端的传输速率,单位是bytes/second,0表示无限制; 配置格式: location /download/ { limit_rate 20480; root /data/site/; } 2、limit_except 限制对指定的请求方法之外的其它方法的其它方法的使用客户端; 配置格式:

Syntax: limit_except method ... { ... } Default: — Context: location 示例:

location /download/ { limit_rate 20480; limit_except GET POST { allow 192.168.1.0/24; deny all; } }

表示除了GET和POST之外的其它方法仅允许192.168.1.0/24中的主机使用;

文件操作优化的配置 1、aio 是否启用aio功能; 配置格式: Syntax: aio on | off | threads[=pool]; Default: aio off; Context: http, server, location 2、directio directio选项可以设置为off或一个大小值,表示当文件大小大于等于这个值时启用directio. 配置格式:

Syntax: directio size | off; Default: directio off; Context: http, server, location 3、open_file_cache nginx可以缓存一下三种信息:

1.文件的描述符、文件大小和最近一次的修改时间; 2.打开的目录结构; 3.没有找到的文件或没有权限访问的文件相关信息; 配置格式:

Syntax: open_file_cache off; open_file_cache max=N [inactive=time]; Default: open_file_cache off; Context: http, server, location max=N:可缓存条目的上限;达到上限后会使用LRU算法实现缓存管理; inactive=time:缓存项的超时时长,在此处指定的时长内未被命中的缓存项即为非活动项; 示例:

open_file_cache max=1000 inactive=20s; 4、open_file_cache_errors 是否缓存查找时发生错误的文件一类的信息; 配置格式:

Syntax: open_file_cache_errors on | off; Default: open_file_cache_errors off; Context: http, server, location 5、open_file_cache_min_uses 在open_file_cache指令指定的inactive参数指定的时长内,至少命中此处指定的次数方可不被归类到非活动项; 配置格式:

Syntax: open_file_cache_min_uses number; Default: open_file_cache_min_uses 1; Context: http, server, location 6、open_file_cache_valid 缓存项有效性的检查频率;默认60s; 配置格式:

Syntax: open_file_cache_valid time; Default: open_file_cache_valid 60s; Context: http, server, location open_file_cache完整配置示例:

open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on;

© 著作权归作者所有

是江山
粉丝 4
博文 44
码字总数 24060
作品 0
苏州
运维
私信 提问

暂无文章

如何使用soapUI模拟webservice客户端发送请求

参考资料 https://jingyan.baidu.com/article/cbcede0712849a02f40b4d88.html 左边是请求参数,可以自己填写!按着那个绿色三角箭头可以模拟发送请求,右边是返回的报文 soapui如何发送xml格...

故久呵呵
33分钟前
4
0
Java Security 介绍

1.介绍 Java平台设计的重点是安全性。在其核心,java语言本身是类型安全的并且提供了垃圾自动回收,这使其增加了应用程序代码的健壮性。安全的类加载以及验证机制确保了只有合法的代码才能够...

lixiaobao
38分钟前
4
0
Niushop开源商城系统-分销商管理

分销商管理 1.分销员的招募与管理 如何申请成为分销员? 在wap端个人中心满足之前设置的升级条件,可以申请分销员 开启分销商审核,需要在后台分销商管理——》待审核处进行审核通过。 通过完...

niushop-芳
39分钟前
3
0
为什么大公司一定要使用 DevOps?

究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁,即开发团队和IT运维团队。那么,DevOps的意图是什么呢?即在两个团队之间,建立良好的沟通和协作,更快更可靠...

cs平台
41分钟前
5
0
高危预警|RDP漏洞或引发大规模蠕虫爆发,用户可用阿里云免费检测服务自检,建议尽快修复

2019年9月6日,阿里云应急响应中心监测到Metasploit-framework官方在GitHub空间公开了针对Windows远程桌面服务远程命令执行漏洞(CVE-2019-0708)的利用代码。利用该代码,无需用户交互操作,即...

Mr_zebra
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部