Nginx基本配置语法
在Linux下每个软件都有自己的配置文件,这个文件通常是一个文本文件,每个软件的配置文件都包含特定的语法,比如PHP使用windows风格ini配置语法,sendmail使用M4处理器编译成配置文件,Nginx也有特定的语法,不过Nginx的语法非常简单。在本文中将说明Nginx的基本语法
在Linux下每个软件都有自己的配置文件,这个文件通常是一个文本文件,每个软件的配置文件都包含特定的语法,比如PHP使用windows风格ini配置语法,sendmail使用M4处理器编译成配置文件,Nginx也有特定的语法,不过Nginx的语法非常简单
配置文件语法
#user nobody; //#可以注释该行
worker_processes 1;
配置指令
在第二行中声明一个指令worker_processes,指令通常都是用分号;
结束,每个指令都有唯一的作用,worker_processes指令声明worker进程的数量,user指令声明以某个用户启动Nginx、
使用include组织文件
inlcude是一个指令他可以帮助我们很好的组织配置文件,一般我们使用他来分离站点配置文件从主配置文件中
在nginx中一般会包含以下这些类型的配置文件
Standard name Description
nginx.conf Base configuration of the application.主配置文件
mime.types A list of file extensions and their associated MIME types.
fastcgi.conf FastCGI-related configuration.FastCGI相关配置
proxy.conf Proxy-related configuration.代理相关配置
sites.conf Configuration of the websites served by Nginx, also known as virtual hosts. It's recommended to create separate files for each domain.虚拟主机配置
include指令支持通配符,也就是说可以这样包含配置文件
include conf/*.conf
使用nginx测试配置文件
nginx -t
指令块
如果你激活一个模块,需要指定特定的指令才可用,某些指令可在不同的指令块中重用
events {
worker_connections 1024;
}
比如你需要在location关闭日志
[…]
location ^~ /admin/ {
index index.php;
access_log off;
}
[…]
指令的特定语法
也许你会对以下语法感到非常困惑
rewrite ^/(.*)\.(png|jpg|gif)$ /image.php? file=$1&format=$2 last;
在rewrite模块中允许使用高级的逻辑结构来声明指令,比如if, set, break, and return指令
指令的值
- k or K: Kilobytes
- m or M: Megabytes
client_max_body_size 2M; #两句是相等的
client_max_body_size 2048k;
时间单位
- ms: Milliseconds
- s: Seconds
- m: Minutes
- h: Hours
- d: Days
- w: Weeks
- M: Months (30 days)
- y: Years (365 days)
变量
模块也可以提供变量作为指令的值,比如http模块定义$nginx_version,可以在log_format指令中使用
[…]
location ^~ /admin/ {
access_log logs/main.log;
log_format main '$pid - $nginx_version - $remote_addr';
}
[…]
有些指令是不允许使用变量
error_log logs/error-$nginx_version.log; #不可用
字符串值
root /home/example.com/www;
root '/home/example.com/my web pages';
当遇到某些特殊的字符时需要使用双引号或者单单引号转义
Nginx基本模块
- Core模块: 基本功能和指令,进程管理和安全
- Events模块: 让您配置的Nginx网络的内部机制
- Configuration模块: 开启包含机制,比如包含配置文件
Nginx进程结构
当启动Nginx时,主进(Main Processes)程会一直存在与内存中,并以当前用户权限启动,主进程(Main Processes)本身不会处理请求,它会衍生出很多work进程(Worker Processes)处理请求