基础配置说明
需要注意的几个点:
- nginx 的 log 文件路径配置
- nginx.pid 所在路径配置
- include 所在路径配置,即 nginx.conf 所在路径
- 在 server 中
listen 监听端口配置
root 访问工程路径配置
include 配置 nginx.conf 所在路径配置
配置说明思维导图
-
全局块:影响 nginx 全局指令,包括用户组、pid 存放路径、日志路径、配置文件引入、允许生成 worker process 数等
-
events 块:影响 nginx 服务器与用户的网络连接,包含每个进程最大连接数、选取哪种事件驱动模型处理连接请求、是否允许同时接收多个网络连接、开启多个网络连接序列化等
- accept_mutex:on 设置网络连接序列化,防止惊群现象发生,默认为 on
- multi_accept:设置一个进程是否同时接收多个网络连接,默认为 off
- use:epoll 事件驱动模型 select/poll/kqueue/epoll/resig/dev/poll/eventport
- worker_connections:1024 最大连接数,默认为512
-
http块:可以嵌套多个 server,配置代理、缓存、日志定义等功能和第三方模块的定义,如 mime-type、文件引入、日志自定义、连接超时时间、但连接请求数等
- include:mime-type 文件扩展名与文件类型映射表
- default_type:默认文件类型,默认为 text/plain
- access_log:off 表示取消服务日志
- sendfile:on 表示允许sendfile方式传输文件,默认为 off,可以在http、server、location中设置
- sendfile_max_chunk:每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限
- keepalive_timeout:连接超时时间,默认为75秒,可以在http、server、location中设置
- upstream:配置服务器地址列表,可以用在 location 中的 proxy_pass 中,
格式:upstream mz{
server 127.0.0.1:8080;
server 10.110.2.101:8080;
} - error_page:错误页,如 404 http://baidu.com
-
server块:配置虚拟主机的相关参数
- listen:监听的地址,IP+端口 | 端口
- server_name:设置域名
- charset:设置网页字符集 utf-8
- access_log:日志文件路径
- keepalive_requests:单连接请求上限次数
-
location块:配置请求的路由,以及各种页面的处理情况
- root:设置前端静态资源的所在路径
- index:默认主页设置
- auth_basic:设置密码提示框文字信息
- auth_basic_user_file:指定密码文件所在位置
- deny:拒绝访问的客户端 IP
- allow:all 表示允许其他所有客户端访问,可以指定单个允许访问的 IP
- proxy_pass:代理服务器地址,请求会分发到指定的服务器,可以使用 http 块中定义的服务器地址,如:http://mz
基于反向代理的负载均衡器
- upstream 块定义了一个名为 backend 的 upstream 组,其中列出了多个后端服务器的地址或域名。你可以根据实际情况添加或删除后端服务器。
- server 块定义了监听的端口和域名。
- location / 块是针对根路径 / 的请求进行配置。proxy_pass 指令将请求转发到名为 backend 的 upstream 组中的后端服务器。
- proxy_set_header 指令用于设置请求头,将原始请求的主机和真实 IP 地址传递给后端服务器。
负载均衡策略
- 轮询(Round Robin):默认的负载均衡策略,Nginx 会将请求按照顺序依次轮询转发给后端服务器。
- IP哈希(IP HASH):根据客户端的 IP 地址,对请求地址进行 HASH 计算,并将请求发送给对应的后端服务器,可以保证相同的 IP 地址会发送到相同地址的后端服务器。
- 最少连接数(Least Connections):Nginx会根据后端服务器的请求连接数,将请求发送给连接数最少的服务器处理请求。
- 权重(Weighted):给每个后端服务器设置一个权重值,根据权重值来分配请求,具有较高权重值的服务器可以分配到更多的请求。
- URL 哈希(URL HASH):同 IP 哈希,可以将相同的 URL 地址发送给对应相同的后端服务器。