Nginx资料之nginx.conf配置文件

◆ 配置文件简单示例:

worker_process  1 ;             # 表示worker进程的数量,一般设置为cpu的核数
events{                         #events 块,使用的事件机制
	worker_connections  1024 ;  # 表示每个worker进程的最大连接数
}
http{                           # 定义HTTP服务
server{                         # 块定义了虚拟主机,定义一个Web 服务
    listen  80 ;                # 监听端口
    server_name  localhost ;    # 监听域名
    #location {}                # 是用来为匹配的 URI 进行配置,URI 即语法中的“/uri/”
    location / {                # 匹配任何查询,因为所有请求都以 / 开头
        root                    # 指定对应uri的资源查找路径,这里html为相对路径,完整路径为
                                # /opt/nginx-1.7.7/html/
        index                   # 指定首页index文件的名称,可以配置多个,以空格分开。如有多个,按配置顺序查找。

◆ 语法规则概述:

1. 使用#开始一个注释行;
2. 使用单引号或者双引号来定义字符串,允许用“\”转义字符;
3. 使用$var 可以引用预定义的一些变量;
4. 配置指令以分号结束,可以接受多个参数,用空白字符分隔:
5. 配置块( block )是特殊的配置指令,它有一个{}参数且无须分号结束,{}里面可以书写多个配置指令,配置块也允许嵌套:
6. 使用"include"指令可以包含其他配置文件,支持“*”通配符;
7. 不能识别或错误的配置指令会导致Nginx 启动失败。

◆ HTTP服务:
由于http块内容太多,如果都写在一个文件里可能会造成配置文件过度庞大,难以维护。在实践中我们通常把server 、location 等配置分离到单独的文件, 再利用include 指令包含进来,这样就可以很好地降低配置文件的复杂度。

http {                          #http 配置块开始,所有的HTTP 相关功能
	include common.conf ;       #基本的HTTP 配置文件,配置通用参数
	include servers/* . conf ;  #包含servers 目录下所有Web服务配置文件
}                               #http 配置块结束

◆ nginx用户及用户组。

user nginx nginx;

注:window下不指定

★ worker进程数:

worker_processes  4;

注:通常等于CPU数量或者2倍于CPU

◆ 错误日志:存放路径

error_log  logs/error.log;  
error_log  logs/error.log  notice;  
error_log  logs/error.log  info; 

◆ PID进程标识符存放路径:
记录master进程的PID

pid logs/nginx.pid;

◆ 指定进程可以打开的最大描述符:数目

worker_rlimit_nofile 204800;

这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

现在在Linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。

这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。

参考资料:https://www.cnblogs.com/ifindu-san/p/7249028.html

◆ lua_code_cache
语法: lua_code_cache on | off
使用的上下文:http, server, location, location if
作用:lua_code_cache是nginx_lua模块的一条指令。它为 _by_lua_file(如 set_by_lua_file 和 content_by_lua_file) 这些指令以及Lua模块, 开启或关闭Lua代码缓存.
  如果关闭,每个ngx_lua处理的请求将运行在一个独立的Lua VM实例里,0.9.3版本后有效. 所以 set_by_lua_file, content_by_lua_file, access_by_lua_file, 等等指令引用的Lua文件将不再缓存到内存, 并且所有Lua模块每次都会从头重新加载. 这样开发者就可以避免改代码然后重启nginx的操作.
  但是, 那些直接写在 nginx.conf 里的代码比如由 set_by_lua, content_by_lua, access_by_lua, and rewrite_by_lua 指定的代码不会在你编辑他们时实时更新,因为只有发送HUP信号通知Nginx才会正确重新加载Nginx的config文件。
  即使打开了代码缓存, 那些
_by_lua_file指令里由 dofile 或 loadfile 加载的Lua文件也无法被缓存 (除非你自己手动缓存了他们). 通常你可以用 init_by_lua 或 init_by_lua_file 其中一种指令来加载所有这些无法被缓存 的文件,或把这些文件做成真正的Lua模块并用require加载.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值