Nginx 配置文件整体说明

一个典型的 Nginx 配置文件,整体上由三部分组成:

  • 全局块:
    配置影响 Nginx 全局指令。一般有运行 Nginx 服务器的用户组,Nginx 进程 pid 存放路径,日志存放路径,配置文件引入,允许生成 worker process 数量等。
  • events块:
    配置影响 Nginx 服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • http块:
    可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

以下是一个典型的 Nginx 配置文件 nginx.conf:

# 全局配置
user www www;
worker_processes 8;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;

# events块配置
events
{
    use epoll;
    worker_connections 65535;
}

# http块配置 
http
{
    include mime.types;
    default_type application/octet-stream;
    client_header_buffer_size 32k;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 120;

    # 负载均衡/反向代理配置
    upstream lb.codebaoku.com {
        server 192.168.80.121:80 weight=3;
        server 192.168.80.122:80 weight=2;
        server 192.168.80.123:80 weight=3;
    }
     
    # 虚拟主机的配置
    server
    {
        listen 80;
        server_name www.codebaoku.com codebaoku.com;
        index index.html;
        root /data/www/codebaoku;

        # 路由匹配配置1
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires 10d;
        }
        # 路由匹配配置2
        location ~ .*.(js|css)?$
        {
            expires 1h;
        }
    }
}

其中,虚拟主机 server 段最为复杂,里面可以包含多个虚拟主机配置。以下范例中包含三个虚拟主机:www.codebaoku.com,static.codebaoku.com,examples.codebaoku.com。

http
{
    # server1: www.codebaoku.com
    server {
        listen 80;
        server_name www.codebaoku.com;
        ......
    }
    # server2: static.codebaoku.com
    server {
        listen 80;
        server_name static.codebaoku.com;
        ......
    }
    # server3: examples.codebaoku.com
    server {
        listen 80;
        server_name examples.codebaoku.com;
        ......
    }
}

每一个虚拟主机里面,又可以可以包含多个 location 块。location 块用于配置请求的路由,也就是访问不同路径 Url 的配置信息。

以下范例中,配置了访问网站的图片和js、css文件的不同信息。

server
{
    # 路由匹配配置1
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires 10d;
    }

    # 路由匹配配置2
    location ~ .*.(js|css)?$
    {
        expires 1h;
    }
}

Nginx 配置文件 nginx.conf 的详细说明:#定义Nginx运行的用户和用户组:user www www; #nginx进程数,建议设置为等于CPU总核心数。worker_processes 8; #进程pid文件:pid /usr/local/nginx/logs/nginx.pid。