Nginx服务的基本配置

nginx在运行时,至少必须加载几个核心模块和一个事件类模块。这些模块运行时,所支持的配置项称为基本配置----所有其他模块执行时,都依赖这些配置。
按照用户使用时的预期功能,分成4类:
1,用于调试,定位问题的配置项
2,正常运行的必备配置项
3,优化性能的配置项
4,事件类配置项
有些配置项,即使没有显示进行配置,也会存在默认值,如daemon,即使没有配置,也相当于打开了这个功能


1,用于调试进程和定位问题的配置项
1-1 是否以守护进程方式运行nginx
语法:daemon on|off
默认:daemon on;
1-2 是否以master/woker方式工作
语法:master_process on|off;
默认:master_process on;
1-3 error日志的设置
语法:error_log /path/file level;
默认:error_log logs/error.log error;
level是日志输出级别:debug,info,notice,warn,error,crit,alert,emerg  如果级别设置为debug,则configure时必须加入--with-debug配置项
1-4 是否处理几个特殊的调试点
语法:debug_points [stop|abort]
通常不会使用这个配置项
1-5 仅对指定的客户端输出debug级别的日志
语法:debug_connection [IP|CIDR]
这个配置项实际上属于事件类配置,因此,它必须放在events{...}中才有效。它的值可以是IP地址或CIDR地址
例如:
events {
     debug_connection 10.224.66.14;
     debug_connection 10.224.57.0/24
}
这样,仅仅以上IP地址的请求才会输出debug级别的日志,其他请求仍然沿用error_log中配置的日志级别(configure时必须加入--with-debug配置项)
1-6 限制coredump核心转储文件的大小
语法:worker_rlimit_core size;
在linux系统中,当进程发生错误或者收到信号而终止时,系统会将进程执行时的内存内容(核心映像)写入一个文件(core文件),以作为调试之用,这就是所谓
的核心转储(core dump)。
1-7 指定coredump文件生成目录
语法:working_directory path;
worker进程的工作目录


2,正常运行的配置项
2-1 定义环境变量
语法:env VAR|VAR=VALUE
这个配置项可以让用户直接设置操作系统上的环境变量。例如:env TESTPATH=/tmp/;
2-2 嵌入其他配置文件
语法:include /path/file;
2-3 pid文件的路径
语法:pid path/file;
默认:pid logs/nginx.pid
2-4 nginx worker进程运行的用户及用户组
语法:user username [groupname];
默认:user nobody nobody;
user用户设置master进程启动后,fork出的worker进程运行在哪个用户和用户组下。当按照"user username;"设置时,用户组名和用户名相同。
若用户在configure命令执行时使用了参数--user=username和--group=groupname,此时nginx.conf将使用参数中制定的用户和用户组。
2-5 指定nginx worker进程可以打开的最大句柄描述符个数
语法:worker_rlimit_nofile limit;
设置一个worker进程可以打开的最大文件句柄数
2-6 限制信号队列
语法:worker_rlimit_sigpending limit;
设置每个用户发往nginx的信号队列的大小。当某个用户的信号队列满了,这个用户再发送的信号会被丢掉


3,优化性能的配置项
3-1 nginx worker进程个数
语法:worker_processes number;
默认:worker_processes 1;
3-2 绑定nginx worker进程到制定的cpu内核
语法:worker_cpu_affinity cpumask [cpumask...]
假定每一个worker进程都非常繁忙,如果多个worker进程都在抢一个cpu,那么这就出现同步问题。(仅对linux系统有效)
例如:4颗cpu内核
worker_processes 4;
worker_cpu_affinity 1000 0100 0010 0001
3-3 SSL硬件加速
语法:ssl_engine device;
如果服务器上有SSL硬件加速设备,那么就可以进行配置以加快SSL协议的处理速度。用户可以通过OpenSSL提供的命令来查看是否有SSL硬件加速设备:
openssl engine -t
3-4 系统调用gettimeofday的执行频率
语法:timer_resolution t;
默认情况下,每次内核的事件调用(如epoll,select,poll,kqueue等)返回时,都会执行一次gettimeofday,实现用内核的时钟来更新nginx中的缓存时钟。
3-5 nginx worker进程优先级设置
语法:worker_priority nice;
默认:worker_priority 0;


4,事件类配置项
4-1 是否打开accept锁
语法:accept_mutex [on|off]
默认:accept_mutex on;
nginx的负载均衡锁,可以让多个worker进程轮流地,序列化地与新的客户端建立tcp连接。当某个worker进程建立的连接数量达到work_connections配置的最大连接数的7/8时,会大大地减小该worker
进程试图建立新TCP连接的机会。默认是打开的,如果关闭它,建立tcp连接的耗时会更短,但worker进程之间的负载会非常不均衡,所以建议不要关闭它。
4-2 lock文件的路径
语法:lock_file path/file;
默认:lock_file logs/nginx.lock
accept锁可能需要这个lock文件,如果accept关闭,这个lock文件无效,如果accept打开,并且编译程序,操作系统架构等因素不支持原子锁,需要这个文件锁实现accept锁
4-3 使用accept锁后到真正建立连接之间的延迟时间
语法:accept_mutex_delay Nms;
默认:accept_mutex_delay 500ms;
在使用accept锁后,同一时间只有一个worker进程能够取到accept锁。这个锁不是阻塞锁,如果取不到会立刻返回。如果有一个worker进程试图取accept锁而没有取到,它至少要等时间间隔后才能再次试图】
取锁
4-4 批量建立新连接
语法:multi_accept [on|off]
默认:multi_accept off;
当事件模型通知有新连接时,尽可能地对本次调度中客户端发起的所有tcp请求建立连接。
4-5 选择事件模型
语法:use [kqueue|rtsig|epoll|/dev/poll|select|poll|eventport]
默认:nginx会自动使用最合适的事件模型
对于linux系统来说,可供选择的事件模型有poll,select,epoll三种,epoll性能最高
4-6 每个worker的最大连接数
语法:worker_connections number;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值