Nginx配置

配置文件结构

修改conf/nginx.conf

# main块

# events块
events {

}

# http块
http {
    # 支持多个server块
    server {
        # 支持多个location块
        location / {
        }
    }
}

核心配置

main块,全局配置

# 是否以守护进程方式运行,默认开启
daemon on;
# 工作进程数,可以对应CPU核心数,设置为auto将匹配CPU核心数,默认值为1
worker_processes 8;
# 配置主进程pid存放位置
pid logs/nginx.pid

events块,服务器与客户端的网络连接相关配置

events {
    # 启用时,一个新连接只唤醒一个工作进程;关闭时,一个新连接唤醒所有工作进程。默认off
    accept_mutex on
    # 启用时,一个工作进程一次接受所有新连接;关闭时,一个工作进程一次接受一个新连接,默认off
    multi_accept off
    # 每个工作进程同时打开的连接最大数量,默认512
    worker_connections 1024;
}

http块,与http相关的配置。http块可以包含多个server块,server块中针对虚拟主机进行配置。server块可以包含多个location块,location块中针对请求URL进行配置。大部分配置项可以同时存在于http块、server块、location块中,生效优先级为location>server>http

http {
    # 包含另外一个文件到配置中,此处引入MIME类型配置
    include mime.types;
    # 默认响应的MIME类型,默认值为text/plain
    default_type application/octet-stream;
    # 高效文件传输模式,默认off,开启后可以提升文件传输速度
    sendfile on;
    # 长连接活跃超时时间,超时连接将关闭。设置值为0则不启用长连接,默认75秒
    keepalive_timeout 75s;
    # 一次长连接最长时间限制,默认1h,时间到处理完请求后连接关闭
    keepalive_time 1h;
    # 一次长连接最多处理的请求数,默认1000,到达限制请求数后连接关闭
    keepalive_requests 1000
    # 读取请求体内容的缓冲区大小,请求体内容大于缓冲区则将内容存到临时文件,64位机默认16k
    client_body_buffer_size 16k
    # 读取请求头信息的缓冲区大小,默认1k
    client_header_buffer_size 1k
    # 请求体临时文件存储路径
    client_body_temp_path client_body_temp
    # 请求体内容最大大小,超过设置值返回413,设置为0不检查,默认1m
    client_max_body_size 1m

    # 设置上游服务器
    upstream doubucket {
        server localhost:10050;
        server localhost:10051;
    }

    # 第一个server作为默认server
    server {
        # 监听的端口
        listen 80;
        # 虚拟主机名称,可以配置多个名称,以空格分开;可使用通配符和正则表达式
        server_name localhost;
        # 配置错误页面
        error_page 500 502 503 504 /50x.html;

        # location块,开头匹配
        location / {
            # 静态资源根目录,路径相对于配置文件
            root html;
            # 默认主页
            index index.html index.htm;
        }

        # location块,精确匹配
        location = /50x.html {
            root html;
        }

        location /api {
            # 反向代理
            # http://localhost/api/doubucket/items/hello -> http://localhost:10050/api/doubucket/items/hello
            proxy_pass http://localhost:10050;
        }

        location /balance {
            # 反向代理,配合上游服务器设置负载均衡
            proxy_pass http://doubucket;
        }
    }
}

测试与更新配置

# 测试
nginx -t
# 更新
nginx -s reload

## Docker容器内
docker exec nginx nginx -t
docker exec nginx nginx -s reload

参考文档