1208 字
4 分钟
Nginx 配置文件详解

Nginx 配置文件详解#

本文仅讲解常用配置,更加详细的内容请参阅官方文档

nginx.conf#

main 块#

main 块是负责整个 nginx 服务器的部分,进行整体运行的配置。

进程管理#

关键字作用示例
worker_processes设置 Nginx 工作进程数(处理实际请求的进程)worker_processes auto;
worker_processes 4;
worker_priority设置工作进程的系统优先级(Linux 下对应 nice 值,范围 - 20~19,值越小优先级越高)worker_priority -5;
worker_rlimit_nofile设置工作进程能打开的最大文件描述符数worker_rlimit_nofile 65535;

日志#

关键字作用示例
error_log设置全局错误日志的路径、级别(优先级:debug < info < notice < warn < error < crit < alert < emerg)error_log /var/log/nginx/error.log warn;

文件路径与权限#

关键字作用示例
pid指定 Nginx 主进程 ID(PID)文件的存储路径pid /run/nginx.pid;
user设置 Nginx 工作进程的运行用户 / 用户组user www-data;

events 块#

events 块负责 nginx 服务器和用户的网络连接,对服务器的性能影响比较大。

关键字作用示例
worker_connections设置单个工作进程能同时处理的最大连接数(包含所有类型连接:HTTP、反向代理、TCP 等)worker_connections 1024;
multi_accept控制工作进程是否一次性接受所有可用的新连接(而非逐个接受)multi_accept on;

http 块#

http 块是服务器配置中最复杂,最核心的部分。代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。同时,http 块中包含了 server 块,来负责各个虚拟主机的配置。

基础配置#

关键字作用示例
include引入外部配置文件include /etc/nginx/sites-enabled/*;
default_type设置默认 MIME 类型(请求无法识别类型时使用)default_type application/octet-stream;
charset设置默认字符集charset utf-8;
server_tokens控制响应头是否显示 Nginx 版本号server_tokens off;
sendfile启用高效文件传输sendfile on;
tcp_nopush配合sendfile on使用,延迟发送 TCP 数据包,凑够大小再发送(减少网络包数量)tcp_nopush on;

SSL 配置#

关键字作用示例
ssl_protocols指定支持的 TLS 协议版本ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers优先使用服务端指定的加密套件ssl_prefer_server_ciphers on;

log 配置#

关键字作用示例
access_log设置访问日志路径 + 使用的日志格式access_log /var/log/nginx/access.log main;

Gzip 配置#

关键字作用示例
gzip开启 Gzip 压缩gzip on;
gzip_types指定需要压缩的 MIME 类型gzip_types text/plain text/css application/json application/javascript;
gzip_comp_level压缩级别(1-9,级别越高压缩率越高、CPU 占用越高)gzip_comp_level 6;

sites.conf#

一般虚拟主机的配置不直接写在 nginx 配置文件的 http 块中,而是分布在多个不同的 sites 配置文件中,这样方便模块化管理。每一个 server 块对应一个虚拟主机,负责处理特定域名 / 端口的请求。

待更新。。。

Nginx 配置文件样例#

NOTE

以下配置文件主要产自豆包。

nginx.conf#

# ===================== 全局配置段 (main) =====================
# Nginx 工作进程数,建议设置为 CPU 核心数(如 2、4),或 auto 自动适配
worker_processes auto; # 自动匹配CPU核心
worker_priority -5; # 提升工作进程优先级
worker_rlimit_nofile 65535; # 增大文件描述符限制
# 错误日志存放路径及级别(debug/info/notice/warn/error/crit)
error_log /var/log/nginx/error.log warn;
user www-data; # 运行用户
pid /run/nginx.pid; # Nginx 进程 PID 文件存放路径
# ===================== 事件配置段 (events) =====================
events {
worker_connections 1024; # 每个工作进程的最大并发连接数
multi_accept on; # 允许每个进程同时接受多个网络连接(提升并发性能)
}
# ===================== HTTP 核心配置段 (http) =====================
http {
include /etc/nginx/mime.types; # 引入 MIME 类型映射文件(决定不同文件后缀的响应头 Content-Type)
default_type application/octet-stream; # 默认 MIME 类型(未知后缀文件按二进制流处理)
access_log /var/log/nginx/access.log; # 访问日志存放路径
sendfile on; # 开启高效文件传输模式
tcp_nopush on;
gzip on; # 压缩配置
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 需压缩的文件类型
include /etc/nginx/conf.d/sites.conf; # 引入虚拟主机配置文件
}

sites.conf#

server {
listen 80 default_server; # 监听80端口
listen [::]:80 default_server; # 支持IPv6
server_name example.com www.example.com; # 绑定的域名
return 301 https://$host$request_uri; # 强制HTTP跳转HTTPS(保留原域名)
}
server {
listen 443 ssl default_server; # 监听443端口
listen [::]:443 ssl default_server;
server_name example.com www.example.com; # 绑定的域名
root /var/www/example; # 网站根目录
index index.html index.htm index.php; # 默认首页
if ($host = example.com){
return 301 https://www.example.com$request_uri;
}
# SSL配置
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# 404错误返回站点根目录的404.html
error_page 404 /404.html;
location = /404.html {
internal;
}
# 500/502/503/504错误返回50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
internal;
}
# 静态文件缓存配置
location ~* \.(css|js|png)$ {
expires 7d; # 缓存7天
}
}
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Nginx 配置文件详解
https://leaf146.cn/posts/nginx-config
作者
LeAf146
发布于
2026-02-12
许可协议
MIT

部分信息可能已经过时