模式切换
配置文件结构
配置文件的位置
Nginx 的主配置文件通常位于以下路径之一,具体位置可能取决于系统环境或安装方式:
Linux 系统:
/etc/nginx/nginx.conf
(常见于通过包管理器安装的 Nginx)/usr/local/nginx/conf/nginx.conf
(常见于从源码编译安装的 Nginx)
Windows 系统:
C:\nginx\conf\nginx.conf
(安装在默认路径时)
在 Nginx 的配置文件目录中,还可能包含一些其他的配置文件和文件夹,例如 sites-available
和 sites-enabled
,用于站点配置的管理。
配置文件的基础结构
Nginx 的配置文件采用模块化和层次化的结构,主要由指令(directives)组成,这些指令定义了 Nginx 的行为。指令分为简单指令和块指令两种。
- 简单指令:通常一行完成,例如:nginx
worker_processes 1;
- 块指令:包含一个或多个简单指令的封闭块,用
{}
包裹,例如:nginxhttp { include mime.types; default_type application/octet-stream; }
配置文件的主要模块和结构
Nginx 配置文件由多个不同的模块组成,每个模块对应一个配置块。常见的模块和配置块如下:
全局设置
这是配置文件的顶层部分,包含一些影响整个 Nginx 服务器的全局指令,如工作进程的数量、日志文件路径等。
例子:
nginxuser nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid;
常见指令:
user
:指定运行 Nginx 的用户和用户组worker_processes
:Nginx 工作进程的数量error_log
:错误日志文件的路径和日志级别pid
:Nginx 运行时的进程 ID 文件路径
events 模块
- 该模块用于配置 Nginx 如何处理连接的事件模型,影响服务器的并发能力。
- 例子:nginx
events { worker_connections 1024; }
- 常见指令:
worker_connections
:每个工作进程允许的最大连接数use
:指定使用的事件驱动模型(如epoll
、kqueue
等)
http 模块
该模块是最常见的模块,用于配置 HTTP 协议相关的设置。大多数 Web 服务器的配置都会在
http
模块中定义,包括虚拟主机、静态资源、代理、缓存等功能。例子:
nginxhttp { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
常见子指令:
include
:引入外部文件,如mime.types
sendfile
:是否使用sendfile
系统调用来提高文件传输效率keepalive_timeout
:指定 HTTP keep-alive 连接的超时时间server
:配置虚拟主机,包含端口监听、域名等配置
server 模块
server
块定义了虚拟主机,每个虚拟主机用一个server
块表示,包含域名、监听端口、根目录等信息。例子:
nginxserver { listen 80; server_name example.com; location / { root /var/www/html; index index.html index.htm; } }
常见指令:
listen
:指定监听的端口或 IP 地址server_name
:指定虚拟主机的域名location
:定义 URI 路径的匹配规则和处理方式
location 模块
location
块用于匹配客户端请求的 URI,Nginx 根据location
块配置来处理不同的请求路径。例子:
nginxlocation / { root /usr/share/nginx/html; index index.html index.htm; } location /images/ { root /data; }
常见指令:
root
:指定请求资源的根目录index
:定义目录请求的默认首页文件proxy_pass
:用于反向代理,将请求转发给其他服务器
其他常见模块
upstream
模块:用于定义后端服务器组,实现负载均衡。nginxupstream backend { server backend1.example.com; server backend2.example.com; }
gzip
模块:用于启用压缩功能,减少传输内容大小。nginxgzip on; gzip_types text/plain application/json;
配置文件的拆分与管理
Nginx 允许将配置文件拆分为多个子文件,通过 include
指令引入它们。这种做法能够简化管理、提高可维护性,常见的子配置文件结构包括:
/etc/nginx/sites-available/
:存放所有可用站点的配置文件,每个站点一个配置文件。/etc/nginx/sites-enabled/
:存放已启用的站点配置,通过软链接连接到sites-available
文件夹中的配置文件。
示例配置文件结构
nginx
# 全局设置
user nginx;
worker_processes 4;
error_log /var/log/nginx/error.log warn;
# 事件设置
events {
worker_connections 1024;
}
# HTTP 模块
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 定义负载均衡的后端服务器组
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
# 定义服务器
server {
listen 80;
server_name example.com;
# 根路径处理
location / {
root /usr/share/nginx/html;
index index.html;
}
# 代理请求到上游服务器
location /app/ {
proxy_pass http://backend;
}
# 启用 Gzip 压缩
gzip on;
gzip_types text/css application/javascript;
}
}
以上是一个典型的 Nginx 配置文件示例,它展示了如何配置全局设置、事件处理、HTTP 服务、负载均衡和 Gzip 压缩等功能。