title: nginx.conf的结构和基础配置解析
date: 2016-12-13 14:57:44
tags: nginx nginx.conf 配置
categories: nginx
nginx.conf中指令格式
- simple directive(简单指令) 如 worker_processes 1;
- block directive (块状指令) 如 http { }
nginx.conf文件结构:
文件结构大体结构
main {
simple_directives parameters;
events{
event_directives parameters;
}
http{
http_directives parameters;
server{
server_directives parameters;
location{
location_directives parameters;
}
}
}
}
其实最外层的main在nginx.conf中是默认实现的,并不会实际写出来。
nginx.conf基础默认配置项(带注释):
#指定用什么用户去跑work process,默认用linux下的nobody用户
#user nobody;
#工作进程数,可以设置为auto,nginx会探测cpu核心数,启动相同数量的work process
worker_processes 1;
#错误日志存放位置.既然叫错误日志,通常应设置级别为warn|error
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#主进程pid文件存放的地点
#pid logs/nginx.pid;
#events模块只能在main上下文中,并且只能配置一个,
#其中可以包含7种简单指令
events {
worker_connections 1024;
#每个worker process可以支持的最大连接数,生成环境根据需要可以设置更大一些(9000)
#值得注意的是,此数字是包括了反向代理等等所需要的连接数在内,并不仅仅是指web端发起的连接数
#multi_accept on #是否work进程一次只接收一个连接。并发较大时应打开
#use epoll #选择底层处理连接的模型,Linux下默认epoll,无需自己设置
#accept_mutex
#accept_mutex_delay
#上面2参数是表示是否让worker进程使用one by one的工作模式,默认是关闭的。
#开启的时候,在低并发的时候非工作状态下的worker process将休眠,避免浪费资源。
}
#nginx配置的“核心”
http {
#include指令用于加载单独的配置文件模块,避免过于臃肿
#而这里的mime.types表示此文件应该在nginx.conf的同级目录下。
#其中的types模块用于表示nginx响应的文件后缀名和content-type直接的映射
#比如你想要让浏览器识别你返回的mytxt.data文件为文本内容在浏览器中显示为文本,添加 text/plain data;
include mime.types;
#上面的匹配失败后,默认给的响应内容类型
default_type application/octet-stream;
#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 logs/access.log main;
#io时不阻塞处理connection,在传输大文件时使用,细节待研究
sendfile on;
#tcp_nopush on;#貌似意思是只有在sendfile启用时使用,让nginx发包的时候满包发送(不明白)通常不使用
#连接idle的最大时间,现代浏览器往往在一个页面同时打开多个connection传输js,css,html等。
#设置最大idle时间避免过长等待浪费connection
#keepalive_timeout 0;
keepalive_timeout 65;
#开启response响应压缩,可以节省带宽,默认关闭。细节待研究
#gzip on;
#server 上下文代表一个虚拟主机,可以有多个,内嵌在比如http,mail模块中
server {
listen 80;
server_name myapp.info; #如果是在本地试验,要修改/etc/hosts的域名映射到本机
location / { #location的匹配规则too tricky,单开一篇blog 注意匹配的文件夹的访问权限
root /usr/local/nginx;
}
}
}
此文是《Nginx From Beginner to Pro》第三章的阅读笔记
更详细的配置细节应查阅官网http://nginx.org/en/docs/