nginx.conf main 段 核心参数:


其中,worker_rlimit_nofile 设定的值不一定能达到这个标准,linux 本身最大能达到 65535 ,尽量的写大是为了充分利用服务器的性能,
ulimit -n 查看用户级的限制(一般是1024,向阿里云华为云这种云主机一般是65535)

与cpu 绑定的好处:减少切换cpu 消耗的资源 ,虽然worker子进程不可能一直拥有该cpu ,但是,确可以只能被某个固定的cpu 调度,这样cpu 的缓存就不会失效了,

调整worker 子进程的优先级:

其中 worker_priority -10 意思是 :120 -10 ,这样就保证了 worker 子进程尽可能的被cpu 调度,
worker_shutdown_timeout 可以防止一些恶意的攻击,(因为可能会故意 不断开服务器连接,严重影响nginx 的性能,)
timer_resolution time:

了解这个参数 先要看下 服务器是如何处理 客户端的请求:

timer_resolution 就是用于控制 用户态 和 内核态之间切换的频率的, 如果要求不高,该数值设大一些,
注:用户态和 内核态之间的切换很耗资源,
守护进程:
nginx 默认情况即是on,默认运行在后台,[ 用的很少 ]

user nginx nginx; worker_processes auto; worker_rlimit_nofile 12500; worker_rlimit_core 50M; working_directory /opt/nginx112/tmp; worker_cpu_affinity 0001 0010 0100 1000; worker_priority -10; worker_shutdown_timeout 5s; timer_resolution 100ms; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name www.paixiaosen.xyz; location / { root html/server1; index index.html index.htm; } } server { listen 80; server_name www.666kaoyan.com; location / { root html/server2; index index.html index.htm; } } }
nginx.conf events段 核心参数:

1,use 参数:

2,worker_connections 参数:

每一个子进程最大的并发数,但是,Linux最大打开句柄数 为65535 ,所以,它是为了尽量提高利用,提高性能,
3,accept_mutex 参数:
负载均衡锁


4,accept_mutex_delay 参数:
如果上面的accept_mutex 设置为了on ,它才有意义,
它是上面的锁 分发给worker 进程,如果此时这个进程正在繁忙,此时,delay 时间就有用了,accept_mutex 会将它分给其他的worker 子进程,

5,multi_accept 参数:
通常情况,worker 进程只会接受一个Http 请求,打开之后,就可以同时 接受多个 http 请求,它对性能影响不大

补: lock_file 参数:
它要用在 main 段中,
记录负载均衡锁 分配的记录,

user nginx nginx;
worker_processes auto;
worker_rlimit_nofile 12500;
worker_rlimit_core 50M;
working_directory /opt/nginx112/tmp;
worker_cpu_affinity 0001 0010 0100 1000;
worker_priority -10;
worker_shutdown_timeout 5s;
timer_resolution 100ms;
lock_file logs/nginx.lock;
events {
worker_connections 15000;
accept_mutex on;
accept_mutex_delay 100ms;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.paixiaosen.xyz;
location / {
root html/server1;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.666kaoyan.com;
location / {
root html/server2;
index index.html index.htm;
}
}
}
nginx.conf http 段 核心参数 (重中之中):
server_name 指令用法:
它用在 http 的 server 字段中,
语法结构:

四种写法:
server_name www.666kaoyan.com
server_name *.666kaoyan.com
server_name www.666kaoyan.*
server_name ~^www.666kaoyan.*$ (正则表达式的匹配, ~表示正则表达式的匹配 )
server_name 指令用法优先级:


所以上述如果请求是 www.nginx.org 的话,请求的就是第一个,
root 和 alias 的用法 区别:

root 如果在http 端声明,那么会对所有的server 生效,如果在server 生效,会对所有的location 生效,
其共同点 和 区别:

例子:

因为root 是会叠加的,所以,正常情况下,我们一般root 指定 应该为:

这时对应的磁盘映射是: /opt/nginx/html/picture/1.jpg !!!

注意事项:

location 的基础用法 :
语法结构:


location 的优先级 :

例子:

深入理解 location 的url 结尾的反斜线 / :

如果不带/ ,nginx 先把 test 当成目录找,在里面找是否有index.html ,如果test 目录不存在,会把 test 当成文件找,找到后返回其内容,
而如果带了/ ,就不会把test 当成文件找了,
stub_status 模块:
它可以给我们提供nginx 监控页面的模块,可以在web页面来查看整个nginx 的运行状态,
语法结构:

示例:
注:此url 应该写的复杂一些,以免让别人访问到,

效果示例:


对我们有参考价值的是:active connections 和 readding writing waiting
注: 默认该模块不在内置里,所以要使用需要编译的时候给它编译进去,--with-http_stub_status_module