Nginx是一个开源的高性能HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。Nginx的常用配置总结如下:
一、全局块
全局块主要设置一些影响Nginx服务器整体运行的配置指令,包括运行Nginx的用户(组)、允许生成的worker process数、Nginx进程PID存放路径、日志的存放路径和类型等。
运行用户和用户组:通过
user
指令指定。如果不配置或配置为nobody,则所有用户都可运行Nginx。工作线程数:通过
worker_processes
指令指定,一般设置为CPU核心数。PID文件存放路径:通过
pid
指令指定。错误日志:通过
error_log
指令指定,包括日志的路径和日志级别。日志级别包括debug、info、notice、warn、error、crit、alert、emerg。
二、events块
events块中的指令主要影响Nginx服务器与用户的网络连接,包括进程最大连接数、数据驱动模型、序列化等。
网络连接序列化:通过
accept_mutex
指令设置,防止惊群现象发生。多连接处理:通过
multi_accept
指令设置,确定一个进程是否同时接受多个网络连接。事件驱动模型:通过
use
指令设置,包括select、poll、kqueue、epoll、rtsig、/dev/poll以及eventport等。最大连接数:通过
worker_connections
指令设置。
三、http块
http块是服务器配置中最频繁的部分,包括配置代理、缓存、日志、第三方模块等,可嵌套多个server。http块又包括http全局块和server块。
1. http全局块
文件扩展名与文件类型映射:通过
include mime.types
指令引入文件扩展名与文件类型映射表。默认文件类型:通过
default_type
指令设置,默认为text/plain。服务日志:通过
access_log
指令设置是否开启服务日志,并记录Nginx服务器提供服务过程应答前端请求的日志。日志格式:通过
log_format
和access_log
指令自定义服务日志格式。文件传输:
sendfile
指令:指定Nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off。sendfile_max_chunk
指令:设置每个进程每次最大传输值。长连接和超时:
keeplive_timeout
指令:设置长连接超时时间。keepalive_requests
指令:设置单连接请求数上限。send_timeout
指令:设置响应客户端的超时时间。请求头设置:
client_header_buffer_size
指令:设置客户端请求头的区缓冲区大小。large_client_header_buffers
指令:设置客户端请求头的最大缓冲区数量和大小。client_max_body_size
指令:允许客户端请求的最大字节数。client_body_buffer_size
指令:设置客户端请求体的缓冲区大小。
2. server块
server块用来设置虚拟主机,可以存在多个。
监听端口:通过
listen
指令设置。location块:配置请求路由,以及各种页面的处理情况。通过匹配请求的URL,对不同的请求进行不同的处理。
反向代理:
proxy_connect_timeout
指令:设置Nginx跟后端服务器连接超时时间。proxy_send_timeout
指令:设置后端服务器数据回传时间。proxy_read_timeout
指令:设置连接成功后,后端服务器响应时间。proxy_buffer_size
指令:设置从Nginx读取并保存用户头信息的缓冲区大小。proxy_buffers
指令:设置代理缓冲区数量和大小。proxy_busy_buffers_size
指令:设置高负荷下缓冲大小。proxy_temp_file_write_size
指令:设置缓存文件夹大小。proxy_set_header
指令:设置请求头信息,如Host、X-Forwarder-For、X-Real-IP等。
3. upstream块(负载均衡服务器设置)
服务器组:通过
upstream
指令定义一个服务器组,并在其中添加多个服务器。负载均衡策略:包括轮询、权重、ip_hash等。
轮询:Nginx默认的负载均衡策略,将客户端的请求按顺序轮流分配到后端服务器上。
权重:通过
weight
参数设置,权重越高的服务器将接收更多的请求。ip_hash:根据客户端的IP地址进行哈希运算,将相同的请求分配给同一个后端服务器。适用于需要保持会话(Session)的场景。
四、安全配置
使用安全稳定版本:从Nginx官方网站获取安装包,并优先选用稳定版最新版。
使用普通账号运行Nginx服务:避免使用root账号运行Nginx,降低安全风险。
修改Nginx根目录的用户与用户组:确保Nginx根目录的权限设置合理。
综上所述,Nginx的常用配置涉及全局块、events块、http块等多个方面,包括运行用户、工作线程数、网络连接设置、文件传输、长连接和超时、请求头设置、反向代理、负载均衡以及安全配置等。这些配置可以根据实际需求进行灵活调整和优化。
0条评论
点击登录参与评论