1. nginx配置系统介绍
nginx的配置系统由一个主配置文件和一些辅助配置文件构成, 这些配置文件默认在 /usr/local/nginx/ 目录下。nginx的配置系统由一个主配置文件和其他一些辅助的配置文件构成。 这些配置文件均是纯文本文件, 全部位于nginx安装目录下的conf目录下。
配置文件中以#开始的行, 或者是前面有若干空格或者TAB, 然后再跟#的行, 都被认为是注释, 也就是只对编辑查看文件的用户有意义, 程序在读取这些注释行的时候, 其实际的内容是被忽略的。
由于除主配置文件nginx.conf以外的文件都是在某些情况下才使用的, 而只有主配置文件是在任何情况下都被使用的。 所以在这里我们就以主配置文件为例, 来解释nginx的配置系统。
2. 主配置文件nginx.conf
nginx默认是安装到/usr/local下,在nginx的conf目录下有个主配置文件nginx.conf,该配置文件主要由四部分组成:
- main(全局配置)
- server(主机配置)
- upstream(负载均衡服务器配置)
- 和location(URL匹配特定位置配置)
3. 全局配置
#定义worker进程运行的用户和用户组
#user nobody;
#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 1;
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#存放nginx进程pid的文件
#pid logs/nginx.pid;
#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
#worker_rlimit_nofile 65535;
4. 事件配置
#工作模式与连接数上限,事件处理
events {
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
#use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数),理论上最高可设置65535,但一般不建议设置这么高
worker_connections 1024;
}
5. http服务器配置
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include mime.types;
#默认文件类型
default_type application/octet-stream;
#日志格式相关定义,main表示日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
# 定义日志的格式。后面定义要输出的内容
# $remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
# $remote_user:用来记录客户端用户名称;
# $time_local: 用来记录访问时间与时区;
# $request: 用来记录请求的url与http协议;
# $status: 用来记录请求状态;成功是200,
# $body_bytes_sent :记录发送给客户端文件主体内容大小;
# $http_referer:用来记录从那个页面链接访问过来的;
# $http_user_agent:记录客户浏览器的相关信息;
#用了log_format指令指定了日志格式之后,指定日志文件的存放路径,指定的日志格式main放在最后
#access_log logs/access.log main;
#开启高效传输模式。
sendfile on;
#防止网络阻塞,此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用
#tcp_nopush on;
#keepalive超时时间
keepalive_timeout 65;
#开启gzip压缩输出
#gzip on;