Nginx(1)
Nginx配置文件结构:


Nginx 配置文件结构详解
Nginx 配置文件(通常为 nginx.conf)采用 「块状指令 + 上下文嵌套」 的结构,从外到内分为多个层级(main、events、http、server、location、upstream 等)。
一、整体结构概述
可以用嵌套矩形直观理解:
- 最外层:main(全局配置)
- 第二层:events(事件模型)
- 第三层:http(HTTP 模块)
- 嵌套:server(虚拟主机)
- 嵌套:location(路由规则)
- 嵌套:upstream(集群/内网服务器)
二、各层级详细说明
1. main(全局配置)
- 位置:所有 {} 之外,是配置的最高层级。
- 作用:控制 Nginx 的全局行为(如进程、日志、PID 等)。
- 常见指令:
- user:运行 Nginx 的用户(如 user nginx;)
- worker_processes:工作进程数(如 worker_processes auto;)
- error_log:错误日志路径及级别
- pid:PID 文件路径
# 运⾏ Nginx 的⽤户和⽤户组
user nginx;
# Worker 进程数量(通常设置为 CPU 核⼼数)
worker_processes auto;
# 错误⽇志路径和级别
error_log /var/log/nginx/error.log;
# PID ⽂件路径
pid /run/nginx.pid;
2. events(事件模型配置)
- 位置:在 main 内部,是一个独立的 events {} 块。
- 作用:配置 Nginx 的事件驱动模型(如连接处理、工作模式、最大连接数)。
- 常见指令:
- worker_connections:每个工作进程的最大连接数
- use epoll:指定事件模型(Linux 系统推荐使用 epoll)
events {
# 每个 Worker 进程的最⼤连接数
worker_connections 1024;
# 事件驱动模型(Linux 下使⽤ epoll)
use epoll;
# 是否允许⼀个 Worker 同时接受多个连接
multi_accept on;
}
3. http(HTTP 模块配置)
- 位置:在 main 内部(通常与 events 同级),是一个 http {} 块。
- 作用:配置 HTTP 协议相关的内容(如 MIME 类型、默认文件、超时时间等)。
- 常见指令:
- include mime.types:引入 MIME 类型配置文件
- default_type application/octet-stream:默认文件类型
- sendfile on:开启高效文件传输模式
- keepalive_timeout 65:长连接超时时间
http {
# 引⼊ MIME 类型配置
include /etc/nginx/mime.types;
default_type application/octet-stream;
(4)server 块
每个 server 块定义⼀个虚拟主机,可以配置不同的域名和端⼝。
⽣活化类⽐:⼀台服务器就像⼀栋写字楼,可以⼊驻多家公司(虚拟主机)。每家公司有
⾃⼰的⻔牌号(端⼝)和公司名(域名),访客根据这些信息找到对应的公司。
# ⽇志格式定义
log_format main '$remote_addr - $remote_user [$time_local]
"$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
# 访问⽇志
access_log /var/log/nginx/access.log main;
# ⾼效⽂件传输
sendfile on;
# 连接超时时间
keepalive_timeout 65;
# 引⼊其他配置⽂件
include /etc/nginx/conf.d/*.conf;
}
三、核心嵌套模块
1. server(虚拟主机配置)
- 位置:嵌套在 http {} 内部。
- 作用:定义一个虚拟主机(即一个域名或 IP + 端口的监听服务)。
server {
# 监听端⼝
listen 80;
# 服务器名称(域名)
server_name www.example.com example.com;
# ⽹站根⽬录
root /usr/share/nginx/html;
# 默认⾸⻚⽂件
index index.html index.htm;
}
2. location(路由规则)
- 位置:嵌套在 server {} 内部。
- 作用:根据请求的 URI(路径)进行匹配,决定如何响应请求。
server {
listen 80;
server_name example.com;
# 匹配根路径
location / {
root /var/www/html;
index index.html;
}
# 匹配 /images/ 开头的路径
location /images/ {
root /var/www;
}
# 精确匹配
location = /favicon.ico {
log_off;
}
}
配置Nginx 虚拟主机:
典型配置结构:一个80端口转发两个域名,两个目录下的index.html
server {
listen 80;
server_name www.example.com;
root /data/site_example;
index index.html;
}
server {
listen 80;
server_name www.example2.com;
root /data/site_example2;
index index.html;
}
反向代理与负载均衡:
什么是反向代理?
反向代理是服务器端的代理。客户端访问反向代理服务器,由代理服务器将请求转发给后
端真实服务器,再将响应返回给客户端。客户端并不知道真实服务器的存在。
案例:
你打电话一家公司:
你不记得每个员工的分机号
你打「公司总机」
前台问你要找谁,再转接到对应同事
对外只有一个号码(IP:端口),内部很多员工(多个服务/多个端口),总机 = 反向代理
反向代理的作⽤:
第⼀,负载均衡。将请求分发到多台后端服务器,提⾼系统处理能⼒。
第⼆,安全隔离。后端服务器隐藏在内⽹,不直接暴露给公⽹。
第三,SSL 终⽌。在代理层处理 HTTPS 加解密,减轻后端负担。
第四,缓存加速。缓存后端响应,减少重复请求。
负载均衡是什么:
当单台服务器⽆法处理所有请求时,需要多台服务器共同分担。负载均衡就是将请求合理
地分配到多台服务器上,使每台服务器的负载相对均衡。
案例:
银行多个窗口
你去银行:
不是所有人都挤到同一个窗口
取号后,系统安排你到空闲窗口
每个窗口都在办理业务,但压力相对平均
取号/调度系统 = 负载均衡
窗口 = 后端服务器
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)