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 加解密,减轻后端负担。

第四,缓存加速。缓存后端响应,减少重复请求。

负载均衡是什么:

当单台服务器⽆法处理所有请求时,需要多台服务器共同分担。负载均衡就是将请求合理

地分配到多台服务器上,使每台服务器的负载相对均衡。

案例:

银行多个窗口

你去银行:

不是所有人都挤到同一个窗口

取号后,系统安排你到空闲窗口

每个窗口都在办理业务,但压力相对平均

取号/调度系统 = 负载均衡

窗口 = 后端服务器

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐