开发者学堂课程【Nginx 企业级 Web 服务实战:Nginx 配件文件详解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/649/detail/10755
Nginx 配件文件详解(二)
三、 Nginx 核心配置详解:
1、全局配置:
user nginx nginx;
#启动 Nginx 工作进程的用户和组
worker_ processes [number| auto];
#启动 Nginx 工作进程的数量,auto 会自动判断核心。
worker. cpu affinity 0000001 0000010 0000100 00001000;
#将 Nginx 工作进程绑定到指定的 CPU 核心,
默认 Nginx 是不进行进程绑定的,绑定并不是意味着当前 nginx 进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了 nginx 的工作进程在不同的 cpu 核心上的来回跳转,减少了 CPU 对进程的资源分配与回收以及内存管理等,因此可以有效的提升 nginx 服务器的性能。
[root@s2 ~]"ps axo pid, cmd,psr,user I grep nginx
4106 nginx: master process /apps 1 root
4181 nginx: worker process θ nginx
4182 nginx: worker process 1 nginx
4184 grep --color=auto nginx θ root
#错误日志记录配置,语法: error_ 1og file [debug 1 info 1 notice 1 warn 1 error 1 crit 1
alert | emerg]
#error_ log 1ogs/error .1og;
Nerror. 1og logs/error .10g notice;
error_ 1og /apps/nginx/1ogs/error .1og error;
#pid 文件保存路径
Pid /apps/nginx/1ogs/nginx.pid;
worker_ priority 0;
w 工作进程 nice 值,-20-19
worker_ rlimit_ nofile 65536
; #这个数字包括 Nginx 的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制,
[root@s2 ~]# watch -n1'ps -axo pid, cmd,nice 1 grep nginx'
#验证进程优先级
daemon off;
#前台运行Nginx服务用于测试、 docker 等环境。
master process offlon;
#是否开启 Nqinx 的 master woker 工作模式,仅用于开发调试场景。
events {
#事件模型配置参数
worker_ connections 65536
; #设置单个工作进程的最大并发连接数
use epoll;
#使用 epol1事件驱动, Nginx 支持众多的事件驱动,比如 select. poll、 epoll, 只能设置在 events 模块中设置。
(间隔的内部实现取决于所使用的方法:
●所述 EVFILT_ TIMER 如果滤波器 kqueue 被使用;
●timer_ create() 如果 eventport 使用:
●setitimer() 除此以外。
句法: use method;
默认: .
内容: events
指定要使用的连接处理 method,通常不需要显式地指定它,因为默认情况下 nginx 将使用最有效的方法。
句法: user user [groupl;
默认:用户无人无人;
内容: main
定义 user 和 group 凭证由工作进程中。如果 group 省略 if, user 则使用名称等于的组。
句法: worker aio_ requests number;
默认: worker aio requests 32;
内容: events
该指令出现在1.14和1.0.7版本中。
)
accept_ mutex on;
W优化同- -时刻只有-个请求而避免多个睡眠进程被唤醒的设置,on 为防止被同时唤醒默认为 off,全部唤醒的过程也成为“惊群”,因此 nginx 刚安装完以后要进行适当的优化。
multi_ accept on;
Nginx 服务 器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受- 一个新的网络连接, 打开后几个同时接受多个。
}
(如果 multi accept 被禁用,则辅助进程将- -次接受- 一个新连接。否则,辅助进程将- -次接受所有 新连接。
如果使用 kqueue 连接处理方法,该指令将被忽略,因为该指令报告等待接受的新连接数。
句法: pcre_ jit on | off;
默认: pcre jit 关闭;
)
2、 http 详细配置:
http {
include
mime.types;
#导入支持的文件类型
default_ type applicat ion/octet-stream
;设置默认的类型,会提示下载不匹配的类型文件
#日志配置部分
#1og format main 'Sremote_ addr。$remote. user [$time_ 1ocal] "Srequest"'
#
'Sstatus Sbody bytes_ sent "Shttp. referer"'
#
"Shttp. user. agent" "Shttp. x forwarded. for"';
waccess_ 1og 1ogs/access.1og main;
#自定义优化参数
sendfil
on
;实现文件零拷贝
#tcp. nosh
on;
#在开启了 sendfile 的情况下, 合并请求后统一发送给客户端。
#tcp. nodelay off;
#在开启了 keepalived 模式下的连接是否启用 TCP_ NODELAY 选项, 当为 off 时,延迟0.2s 发送,默认0n 时,不延迟发送,立即发送用户相应报文。
(名用或禁用该 TCP NODELAY 选项的使所。当连接转换为保持活动状态时,将启用该选项。此外,它在 SSL 连接,
无缓冲代理和 WebSocker 代理上启用。
句法: tcp_ nopush on I off;
默认:
tcp nopush off;
内容:
http, server, location !
)
#keepalive_ timeout 0;
keepalive_ timeout 65 65;
#设置 会话保持时间
wgzip on;
开启文件压缩
server {
listen
80;
#设置监听地址和端口
server. name localhost;
#设置 server name, 可以以空格隔开写多个并支持正则表达式,
如
* . magedu.com www . magedu." www. (site\d+)\. magedu\.com$ default_ server
Hcharset koi8-r
; #设置编码格式,默认是俄语格式,可以改为 utf-8
(设置虚拟服务器的名称,例如:
服务器{
server. nane exanple.com www.example.com;
名字将成为主服务器名称。
服务器名称可以包含- -个星号(°") ,以替换名称的第一部分或最后一部分:
服务器{
server. nane exanple.com * . example.com www.example. *;
|)
这样的名称称为通配符名称。
上面提到的前两个名称可以合并为-个:
服务器{
server. nane .example.com;
也可以在服务器名称中使用正则表达式,在名称前加上波浪号("-) :
服务器{
server_ nane ww. exanple.com~^ ww \ d + \。example \ .com $;
)
#access_ log logs/host .access.1og 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$ { #以http的方式转发php请求到指定web服务器
proxy_ pass
http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1: 9000
#
#location一\.php$ {
#以fastcg1的方式转发php请求到php处理
root
html;
#
fastcgi_ pass
127.0.0.1:9000;
#
fastcg1_ index index .php;
fastcg1 param SCRIPT FILENANE /scriptsSfastcg1 script. name;
include
fastcgi_ params;
#}
deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
Wlocation-/\.ht {
拒绝 web 形式访问指定文件,如很多的网站都是通过.htaccess 文件来改变自己
的重定向等功能。
I
#
deny all;
}
location一/passwd .html {
deny all;
}
# another virtual host using mix of IP-, name-, and port - based configuration
Nserver {
自定义虚拟 server
# listen ;
8000;
#
listen
somenane : 8080;
server_ name
somenane
alias
another .alias;
#
location 1 {
root
html;
index index.html index.htm;
#指定默认网页文件,此指令由 ngx. _http. index. module 模块提供
#}
#
# HTTPS server
#server {
#https服务器配置
#
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;
}
location /1inux38/passwd.ht {
deny all;
}
#}
3、全局配置
user nginx nginx
; 启动 Nginx 工作进程的用户和组
worker_ processes [number| auto];
#启动 Nginx 工作进程的数量
worker. .cpu. affinity 00000011 0000010 0000100 0000100;
#将 Nginx工作进程绑定到指定的 CPU 核心,默认 Nginx 是不进行进程绑定的,绑定并不是意味着当前 nginx 进程独占以一-核心 CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了 nginx 的工作进程在不同的 cpu 核心上的来回跳转,减少了CPU 对进程的资源分配与回收以及内存管理等,因此可以有效的提升 nginx 服务器的性能。
[root@s2 -]#ps axo pid, cmd, psr,user I grep nginx
4106]nginx: master process /apps
1 root
4181 nginx: worker process
θ nginx
4182 nginx: worker process
1 nginx
4184 grep --color=auto nginx
θ root
#错误日志记录配置,语法: error. 1og file [debug 1 info 1 notice 1 warn 1 error 1 crit|
alertI emerg]
Herror. .1og logs/error .10g;
#error_ 1og logs/error .1og notice;
error_ 1og /apps/nginx/logs/error .1og error;
#pid 文件保存路径
pid
/apps/nginx/logs/nginx. pid;
worker_ priority θ;
#工作进程 nice 值,-20-19
worker_ rlimit_ nofile 65536;
#这个数字包括 Nginx 的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一 个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制,
[root@s2 -]# watch -n1 'ps -axo pid, cmd,nice 1 grep nginx'
#验证进程优先级
daemon off;
前台运行 Nginx 服务用于测试、 docker 等环境。
master. process offlon;
#是否开启 Nginx 的 master woker 工作模式,仅用于开发调试场景。
events {
事件模型配置参数
worker. .connections 65536;
#设置单个工作进程的最大并发连接数
use epoll;
#使用 epoll 事件驱动,Nginx 支持众多的事件驱动,比如 select. poll. epoll,只能设置在 events 模块中设置。
accept. mutex on;
#优化同- -时刻只有-个请求而避免多个睡眠进程被唤醒的设置,on 为防止被同时唤醒默认为 off,全部唤醒的过程也成为“惊群”,因此 nginx 刚安装完以后要进行适当的优化。
multi_ accept on; Nginx 服务器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。