了解Nginx配置文件

Nginx 阅读: 113

要学习Nginx,了解配置文件是必须的。

配置文件结构

Nginx配置文件由指令组成。指令分为简单指令和块指令。简单的指令由名称和参数组成,以空格分隔,以分号结尾(;)。块指令具有与简单指令相同的结构,但它以一组由大括号包围的附加指令结束,而不是分号({和})。如果块指令可以在大括号中包含其他指令,则称为上下文(例如:events, http, server,location等)。

配置文件中放置在任何上下文之外的指令称为主上下文。#表示单行注释。配置结构示意如下:

# 全局块
...

# events块
events {
    ...
}

# http块
http {
    # http全局块
    ...
    # server块
    server {
        # server全局块
        ....
        # location块
        location ... {
            ...
        }
        ...
    }
    ...
}

各模块功能:

  • 全局块:配置影响nginx全局的指令。一般有:运行nginx的用户组,nginx进程pid路径,日志路径,配置文件引入,允许的worker进程数等。
  • events块:配置影响nginx与用户的网络连接。一般有:每个worker进程的最大连接数,事件驱动模型处理连接请求类型,是否允许同时接受多个网路连接,是否开启多个网络连接序列化等。
  • http块:内部可包含多个server块,每个server即是一个虚拟主机。http全局块一般的指令有:配置代理,缓存,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • server块:虚拟主机相关配置,如端口号,域名,根目录,默认文件等。
  • location:配置路由。

配置文件示例

# nginx进程使用的用户
user nobody nobody;

# 允许的worker进程数量
worker_processes  1;

# error日志配置, notice和info表示日志等级,依次为:debug|info|notice|warn|error|crit|alert|emerg
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

# 进程pid文件
#pid        logs/nginx.pid;

# 网络连接相关
events {
    # 每个worker进程可处理的连接数量
    worker_connections  1024;

    # 设置网路连接序列化,防止惊群现象发生,默认为on
    accept_mutex on;

    # 设置一个进程是否同时接受多个网络连接,默认为off
    multi_accept on;

    # 事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    #use epoll;      
}

# http块
http {
    # 引入文件mime类型表
    include       mime.types;

    # 默认返回的mime类型
    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"';

    # 全局访问日志配置,mian为要使用的格式名称
    access_log  logs/access.log  main;

    # 是否开启sendfile
    sendfile        on;

    # 连接超时时间,单位秒
    keepalive_timeout  65;

    # 是否开启gzip
    gzip  on;

    # server块
    server {
        # 监听的端口号
        listen       80;

        # 监听的地址或者域名,多个之间用空格隔开
        server_name  localhost;

        # 编码设置
        #charset koi8-r;

        # 单独访问日志配置
        #access_log  logs/localhost.access.log  main;

        # location块
        location / {
            # 根目录
            root   html;

            # 默认页面
            index  index.html index.htm;
        }

        # 错误页面配置,404为错误码
        #error_page  404              /404.html;

        # 错误页面配置
        error_page   500 502 503 504  /50x.html;
    }
}

具体的指令说明可以查看文章末尾的参考文档:nginx核心模块。

参考文章:

版权声明:本文为博主原创文章,转载需注明来自: 洛洛の空间