10.5 Nginx.conf 主配置文件解析
nginx.conf 文件结构
main block:主配置端,全局配置,对http,mail都有效 event{ ... }事件驱动相关的配置 http{ ... }http/https协议相关配置 ################## 默认配置不包含下面两个块 mail stream
nginx.conf解析
user nginx nginx;
#指定nginx工作用户 worker_processes auto;
#启动工作进程数量,并可以指定cpu亲缘性(哪个进程分配给哪个cpu) error_log /var/log/nginx/error.log;
#指定错误日志路径
pid /run/nginx.pid; #指定pid文件 # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024;
设置单个nginx工作进程可以接受的最大并发
作为web服务器时,最大并发数为 work_connections*worker_processes
作为反向代理时需要 /2 }
#主要影响nginx服务器与用户的网络连接
1.是否允许同时接受多个网络连接
2.使用哪种时间驱动模型处理请求
3.每个工作进程可以同时支持的最大连接数
4.是否开启对多进程下网络连接序列化等
http {
nginx服务器配置中的重要部分
缓存,代理,日志格式定义等绝大多数功能和第三方模块都可以在这设置
http可以包含多个server块,
一个server块又可以包含多个location块
http块可以配置文件引入,日志自定义,mime-type定义,sendfile启用,连接超时时等
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; 配置server监听的端口 listen [::]:80 default_server; server_name _; 虚拟主机,域名 root /usr/share/nginx/html; 家目录 # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / {
server的一个指令,
nginx具有比较多的而且灵活的配置都是在locaiton中体现的
主要是基于nginx接受到的请求字符串,
对用户的请求URL进行皮皮鹅
并对指定的指令进行处理,包括地址重定向,数据缓存,和应答控制功能都是在此实现
另外很多第三方模块的配置也是在此配置
root 默认页面目录名称
index 默认页面文件名称
} error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /404.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
全局配置
main全局配置段常见的配置指令:
正常运行必备的配置
优化性能相关的配置
用于调试及定位问题相关的配置
事件驱动相关的配置
worker_processes [number|auto] worker_cpu_affiniity 00000001 00000010 00000100 00001000 cpu mask:7号 cpu 1000 0000 默认不进行绑定,绑定也不意味这nginx进程独占一核心cpu 但是可以保证此进程不会运行在其它核心上,极大的减少nginx工作进程在不同核心cpu上来回跳转, 减少了cpu对进程的资源分配与回收以及内存管理等, 可以有效的提升nginx服务器性能 worker_priority 0 工作进程优先级(-20~20) worker_rlimit_nofile 65536; 所有woker进程能打开的文件数量上限,包括nginx的所有连接 另外一个考虑因素是实际的并发数不能超过系统级别的最大打开文件数的限制 最好与ulimit -n (很多文件都显示系统打开文件最大句柄数是65536,此值怎么来的,能否超过呢,最大的值到底是多少呢)
http配置段
http { ... 各server公共配置 server { } server { server_name root location URL { alias if { ... } } } }