配置文件结构
修改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
参考文档
PREVIOUSRabbitMQ在Docker下安装
NEXTJava栈与队列的实现