文章目录
- 原文内容
- 内容解释
- Nginx 配置文件详解
- 1. 全局配置
- 2. 动态模块加载
- 3. 事件处理配置
- 4. HTTP 配置
- 4.1 日志格式
- 4.2 访问日志
- 4.3 文件传输优化
- 4.4 连接保持
- 4.5 MIME 类型
- 4.6 加载其他配置文件
- 5. 默认服务器配置
- 5.1 默认服务器块配置
- 5.2 location 配置
- 6. TLS 启用的服务器配置(注释部分)
- 总结
原文内容
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;server {listen 80 default_server;listen [::]:80 default_server;server_name _;root /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }}
内容解释
Nginx 配置文件详解
这是一个典型的 Nginx 默认配置文件,它定义了 Nginx 服务的基本行为和设置。
1. 全局配置
user nginx;
: 设置 Nginx 工作进程的用户身份为nginx
用户。worker_processes auto;
: 设置工作进程的数量为自动,Nginx 会根据可用的 CPU 核心数自动设置工作进程的数量。error_log /var/log/nginx/error.log;
: 指定错误日志的存放路径和级别(默认为 error)。pid /run/nginx.pid;
: 指定 Nginx 主进程的 PID 文件存放路径。
2. 动态模块加载
include /usr/share/nginx/modules/*.conf;
: 加载位于/usr/share/nginx/modules/
目录下的所有.conf
文件,这些文件通常用于加载动态模块。
3. 事件处理配置
events { ... }
: 定义与连接处理相关的设置。worker_connections 1024;
: 设置每个工作进程可以同时处理的最大连接数。
4. HTTP 配置
http { ... }
: 定义 HTTP 服务的相关设置。
4.1 日志格式
log_format main ...;
: 定义名为main
的日志格式,用于记录访问日志。其中包含客户端 IP、用户、时间、请求行、状态码、发送字节数、 Referer、User-Agent 和 X-Forwarded-For 等信息。
4.2 访问日志
access_log /var/log/nginx/access.log main;
: 指定访问日志的存放路径和使用的日志格式(main
)。
4.3 文件传输优化
sendfile on;
: 开启sendfile
功能,用于高效地传输文件。tcp_nopush on;
: 开启tcp_nopush
功能,在发送响应头部之前,尝试发送更多的文件数据,减少发送次数。tcp_nodelay on;
: 开启tcp_nodelay
功能,禁用 Nagle 算法,减少延迟。
4.4 连接保持
keepalive_timeout 65;
: 设置保持连接的超时时间,单位为秒。如果在 65 秒内没有新的请求,则关闭连接。
4.5 MIME 类型
types_hash_max_size 2048;
: 设置 MIME 类型哈希表的最大大小。include /etc/nginx/mime.types;
: 加载 MIME 类型配置文件。default_type application/octet-stream;
: 设置默认的 MIME 类型为application/octet-stream
。
4.6 加载其他配置文件
include /etc/nginx/conf.d/*.conf;
: 加载位于/etc/nginx/conf.d/
目录下的所有.conf
文件,这些文件通常用于定义虚拟主机和服务。
5. 默认服务器配置
server { ... }
: 定义一个默认的服务器块。listen 80 default_server;
: 监听 TCP 的 80 端口,并将此服务器块设置为默认服务器,处理没有匹配到其他server_name
的请求。listen [::]:80 default_server;
: 监听 IPv6 的 80 端口,同样设置为默认服务器。server_name _;
: 匹配所有请求,_
是一个通配符。root /usr/share/nginx/html;
: 设置服务器根目录为/usr/share/nginx/html
。
5.1 默认服务器块配置
include /etc/nginx/default.d/*.conf;
: 加载位于/etc/nginx/default.d/
目录下的所有.conf
文件,用于配置默认服务器的特定行为。
5.2 location 配置
location / { ... }
: 匹配所有以/
开头的请求,这里没有特别的配置,表示使用默认行为。error_page 404 /404.html;
: 当发生 404 错误时,返回/404.html
页面。location = /40x.html { ... }
: 精确匹配/40x.html
请求,这里没有特别的配置。error_page 500 502 503 504 /50x.html;
: 当发生 500、502、503 或 504 错误时,返回/50x.html
页面。location = /50x.html { ... }
: 精确匹配/50x.html
请求,这里没有特别的配置。
6. TLS 启用的服务器配置(注释部分)
# server { ... }
: 这是一个注释的服务器块,用于配置 TLS 启用的服务器。listen 443 ssl http2 default_server;
: 监听 TCP 的 443 端口,启用 SSL 和 HTTP/2,并设置为默认服务器。listen [::]:443 ssl http2 default_server;
: 监听 IPv6 的 443 端口,同样启用 SSL 和 HTTP/2,并设置为默认服务器。ssl_certificate "/etc/pki/nginx/server.crt";
: 指定 SSL 证书文件的路径。ssl_certificate_key "/etc/pki/nginx/private/server.key";
: 指定 SSL 私钥文件的路径。ssl_session_cache shared:SSL:1m;
: 开启 SSL 会话缓存,并设置缓存大小为 1MB。ssl_session_timeout 10m;
: 设置 SSL 会话超时时间为 10 分钟。ssl_ciphers PROFILE=SYSTEM;
: 使用系统默认的 SSL 密码套件。ssl_prefer_server_ciphers on;
: 优先使用服务器端的密码套件。
总结
这个配置文件定义了 Nginx 的基本运行参数,包括用户、工作进程数、日志、文件传输优化、连接保持、MIME 类型等。它还定义了一个默认的服务器块,用于处理 HTTP 请求,并提供了注释的 TLS 服务器配置示例。通过加载其他配置文件,可以方便地扩展和定制 Nginx 的功能。