牛叔叔 的笔记

好好学习

2024-10-31 12:33

最常用的Nginx配置总结

牛叔叔

运维

(77)

(0)

收藏

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_formataccess_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条评论

点击登录参与评论