语法规则
- 配置文件由指令与指令块构成;
- 每条指令以 ; 分号结尾,指令与参数间以空格符号分隔;
- 指令块以 {} 大括号将多条指令组织在一起;
- include 语句允许组合多个配置文件以提升可维护性;
- 使用 # 符号添加注释,提高可读性;
- 使用 $ 符号使用变量;
- 部分指令的参数支持正则表达式;
典型配置
# main段配置信息
user nginx test; # 设置WORKER进程的属主和属组, 其中组可以不指定。该设置表示:运行WORKER的用户是nginx, 属组是test
worker_processes 1; # 设置WORKER的进程数(一般设置为和CPU核数一样), 如果设为auto则表示与当前CPU物理核心数一致
error_log /var/log/nginx/error.log warn; # NGINX错误日志目录
pid /var/run/nginx.pid; # NGINX服务启动时 pid 存放位置
# events段配置信息
events {
# use epoll; # 使用epoll的I/O模型(如果你不知道Nginx该使用哪种轮询方法, 会自动选择一个最适合你操作系统的, 一般不推荐配置该项, 由操作系统自己默认选择)
worker_connections 1024; # 每个WORKER进程允许的最大并发数
accept_mutex on # 用于设置是否打开负载均衡互斥锁。默认是off关闭的, 一般推荐打开
}
# http段配置信息
http {
# 设置日志模式
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; # NGINX访问日志目录
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; # 默认文件类型
include /etc/nginx/conf.d/*.conf; # 加载子配置项
server {
listen 80; # 配置监听的端口
# 指定虚拟主机域名
# 域名匹配的四种写法:
# 精确匹配:server_name www.baidu.com ;
# 左侧通配:server_name *.baidu.com ;
# 右侧通配:server_name www.baidu.* ;
# 正则匹配:server_name ~^www\.baidu\.*$ ;
# 匹配优先级:精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配
server_name localhost; # 配置的域名, server_name NAEM1 NAME2 NAME3
location / {
# root用于指定静态资源目录, 可以写在http/server/location等模块中进行配置
root /usr/share/nginx/html; # 网站根目录
# index指令中列出多个文件名, NGINX按指定的顺序搜索文件, 并返回找到的第一个文件
index index.html index.htm; # 默认首页文件
deny 172.168.22.11; # 禁止访问的ip地址, 可以为all
allow 172.168.33.44; # 允许访问的ip地址, 可以为all
}
error_page 500 502 503 504 /50x.html; # 默认50x对应的访问页面
error_page 400 404 error.html; # 默认40x对应的访问页面
}
}
root 和 alias 的区别
# 示例1:
location /image {
# 用于指定静态资源所在的目录(实际路径 = 目录+URI)
root /opt/nginx/static;
}
# 当用户访问 http://www.baidu.com/image/1.png时,实际在服务器找的路径是:/opt/baidu/static/image/1.png,
# root 会将定义路径与URI相加, 而alias则只取定义路径。
# 示例2:
location /image {
# 用于指定静态资源所在的目录(实际路径 = 目录)
alias /opt/nginx/static/image/;
}
# 当用户访问 http://www.baidu.com/image/1.png时,实际在服务器找的路径是:/opt/baidu/static/image/1.png,
# 使用 alias末尾一定要添加 / , 且它只能位于location模块中。