【Nginx 入门】4、Nginx 配置语法

【Nginx 入门】Nginx 配置语法


系列文章目录

【Nginx 入门】1、Nginx 简介
【Nginx 入门】2、Nginx 安装与基本配置
【Nginx 入门】3、Nginx 基本命令
【Nginx 入门】4、Nginx 配置语法(本文)
【Nginx 入门】5、Nginx 处理请求的流程
【Nginx 入门】6、Nginx 反向代理
【Nginx 入门】7、静态文件服务
【Nginx 入门】8、Nginx 日志管理


Nginx 的配置文件采用模块化和分层结构,使得它非常灵活和强大。本章将详细介绍 Nginx 配置文件的基本语法和结构,帮助你理解和编写 Nginx 配置。

1. 配置文件结构

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf。这个文件包含全局设置、事件模块设置、HTTP 核心模块设置和虚拟主机配置。Nginx 的配置文件可以包含其他配置文件,例如:

http {
    include /etc/nginx/conf.d/*.conf;
}

2. 基本语法规则

2.1 指令和块

Nginx 配置由指令和块组成。指令以分号 (;) 结尾,块由花括号 ({}) 包围。例如:

worker_processes auto;  # 指令

events {
    worker_connections 1024;  # 块中的指令
}

2.2 注释

注释以 # 开头,可以放在配置文件的任意位置。例如:

# 这是一个注释
worker_processes auto;  # 这也是一个注释

3. 配置指令详解

3.1 全局指令

这些指令在配置文件的顶层定义,影响 Nginx 的整体行为。

user

指定 Nginx 进程的用户和组。例如:

user nginx;
worker_processes

指定工作进程的数量。可以设置为具体数字或 auto,自动根据 CPU 核心数调整。例如:

worker_processes auto;
pid

指定 PID 文件的路径。例如:

pid /var/run/nginx.pid;

3.2 事件模块指令

这些指令在 events 块中定义,影响 Nginx 如何处理连接。

worker_connections

指定每个工作进程的最大连接数。例如:

events {
    worker_connections 1024;
}
use

指定事件驱动模型(如 epollkqueue 等)。例如:

events {
    use epoll;
}

3.3 HTTP 核心模块指令

这些指令在 http 块中定义,影响 HTTP 请求的处理方式。

include

包含其他配置文件。例如:

http {
    include /etc/nginx/mime.types;
}
default_type

指定默认的 MIME 类型。例如:

http {
    default_type application/octet-stream;
}
log_format

定义日志格式。例如:

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

指定访问日志的路径和格式。例如:

http {
    access_log /var/log/nginx/access.log main;
}
sendfile

启用高效文件传输模式。例如:

http {
    sendfile on;
}
keepalive_timeout

指定连接保持时间。例如:

http {
    keepalive_timeout 65;
}

3.4 服务器块指令

这些指令在 server 块中定义,配置虚拟主机。

listen

指定服务器监听的端口。例如:

server {
    listen 80;
}
server_name

指定服务器名称。例如:

server {
    server_name example.com;
}
root

指定站点的根目录。例如:

server {
    root /usr/share/nginx/html;
}
index

指定默认的首页文件。例如:

server {
    index index.html index.htm;
}

3.5 位置块指令

这些指令在 location 块中定义,配置请求处理。

location

定义一个位置块,用于匹配 URI。例如:

server {
    location / {
        try_files $uri $uri/ =404;
    }
}
try_files

尝试按顺序匹配文件或返回错误。例如:

location / {
    try_files $uri $uri/ =404;
}

4. 示例配置解析

下面是一个完整的 Nginx 配置示例,我们将逐行解析:

# 全局指令
user nginx;
worker_processes auto;
pid /var/run/nginx.pid;

# 事件模块指令
events {
    worker_connections 1024;
}

# HTTP 核心模块指令
http {
    include /etc/nginx/mime.types;
    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;

    sendfile on;
    keepalive_timeout 65;

    # 服务器块指令
    server {
        listen 80;
        server_name example.com;

        root /usr/share/nginx/html;
        index index.html index.htm;

        # 位置块指令
        location / {
            try_files $uri $uri/ =404;
        }

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}

4.1 全局指令

  • user nginx;:指定 Nginx 进程运行的用户。
  • worker_processes auto;:自动设置工作进程数。
  • pid /var/run/nginx.pid;:指定 PID 文件路径。

4.2 事件模块指令

  • worker_connections 1024;:每个工作进程的最大连接数。

4.3 HTTP 核心模块指令

  • include /etc/nginx/mime.types;:包含 MIME 类型映射表。
  • default_type application/octet-stream;:默认 MIME 类型。
  • log_formataccess_log:定义日志格式和位置。
  • sendfile on;:启用高效文件传输模式。
  • keepalive_timeout 65;:连接保持时间。

4.4 服务器块指令

  • listen 80;:监听 80 端口。
  • server_name example.com;:服务器名称。
  • root /usr/share/nginx/html;:网站根目录。
  • index index.html index.htm;:默认首页文件。

4.5 位置块指令

  • location /:匹配所有 URI。
  • try_files $uri $uri/ =404;:尝试按顺序匹配文件,找不到则返回 404。
  • error_pagelocation:定义错误页面。

5. 总结

在本教程中,我们详细介绍了 Nginx 配置语法,包括基本语法规则、全局指令、事件模块指令、HTTP 核心模块指令、服务器块指令和位置块指令。通过这些内容,你可以编写和理解 Nginx 的配置文件,为后续的 Nginx 高级配置和优化打下坚实基础。在接下来的教程中,我们将深入探讨 Nginx 处理请求的流程,敬请期待!

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值