Nginx配置文件通常命名为nginx.conf
,位于其安装目录下的conf
目录内。Nginx配置文件的结构层次分明,主要包括以下几个部分:
1. 全局配置(Main Context)
全局配置部分包含了影响整个Nginx服务器的通用设置,如:
user nobody; # 设置Nginx服务器运行的用户和用户组
worker_processes auto; # 指定工作进程的数量,根据系统实际情况自动确定最佳值
error_log /var/log/nginx/error.log; # 设置全局错误日志路径和级别
pid /run/nginx.pid; # 设置Nginx主进程的PID文件路径
events { # 事件模块配置
use epoll; # 使用epoll事件模型(Linux系统)
worker_connections 1024; # 每个工作进程允许的最大连接数
}
http { # HTTP服务器的相关配置
include mime.types; # 包含MIME类型映射文件
default_type application/octet-stream; # 设定默认内容类型
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; # 设置HTTP访问日志路径和格式
sendfile on; # 开启高效文件传输模式
keepalive_timeout 65; # 设置长连接超时时间
# 虚拟主机配置(Server Blocks)
server {
listen 80; # 监听的端口
server_name example.com; # 域名或IP地址
# 位置配置(Location Blocks)
location / {
root /var/www/html; # 设置网站根目录
index index.html index.htm; # 设置默认文件
}
# 反向代理配置
location /api/ {
proxy_pass http://backend_server; # 后端服务器地址
}
# 其他更多配置,如SSL配置、缓存设置、重写规则等
}
}
2. Server Blocks
Server Block代表了一个虚拟主机配置,可以针对不同的域名或IP地址提供不同的服务。在这个上下文中,可以配置监听的端口、服务器名称、SSL证书、以及各个Location的处理规则。
3. Location Blocks
Location Blocks用于定义特定URL前缀的请求应该如何处理,可以包含内容处理规则、代理配置、URL重写规则等。Location可以精确匹配,也可以使用正则表达式进行模糊匹配。
4. Upstream Blocks
Upstream Blocks用于配置一组后端服务器,常用于负载均衡和故障转移。例如:
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com;
server backend3.example.com backup;
}
5. Mail Blocks(可选)
Nginx还支持邮件代理和SMTP服务的配置,但大多数情况下,我们关注的是其HTTP服务功能。
总结
Nginx配置文件的核心在于理解和配置这些不同层级的块状结构,并根据实际应用场景进行定制化。每一个配置块内部都有许多特定的指令,通过合理的配置,可以实现高并发处理、负载均衡、静态资源服务、动态内容代理等多种功能。