03 nginx.conf 核心参数
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