从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

    • 服务器软件

      • 什么是服务器软件
      • Nginx 介绍
      • Nginx 的安装和启停
      • Nginx 配置
        • 使用配置文件
        • 默认配置文件
        • 全局块
        • events 块
        • http 块
        • 可视化配置 Nginx
      • Nginx 配置反向代理
      • Nginx 配置多个反向代理
      • Nginx 配置负载均衡
      • Nginx 配置动静分离
      • Nginx 集群概念
      • Nginx 配置高可用(主从)
      • Nginx 原理
      • Nginx 日志管理
      • Nginx 手册
      • Nginx 系列完结
      • Tomcat 介绍
      • Tomcat 安装和启停
      • Tomcat 配置
      • Tomcat 部署项目
      • IDEA 新建 JavaWeb 项目
      • Tomcat 集群
    • 环境管理和配置管理-科普篇
    • Servlet 入门

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java
  • JavaWeb
  • 服务器软件
2023-04-17
目录

Nginx 配置

# 03.Nginx 配置

接下来我们简单讲讲 Nginx 如何进行配置。

‍

# 使用配置文件

安装了 Nginx 后,Nginx 的目录结构如下:

# cd /opt/nginx
# ll
总用量 4
drwx------. 2 nobody root    6 3月  26 22:31 client_body_temp
drwxr-xr-x. 2 root   root 4096 3月  26 22:21 conf
drwx------. 2 nobody root    6 3月  26 22:31 fastcgi_temp
drwxr-xr-x. 2 root   root   40 3月  26 22:21 html
drwxr-xr-x. 2 root   root   41 3月  26 22:31 logs
drwx------. 2 nobody root    6 3月  26 22:31 proxy_temp
drwxr-xr-x. 2 root   root   19 3月  26 22:21 sbin
drwx------. 2 nobody root    6 3月  26 22:31 scgi_temp
drwx------. 2 nobody root    6 3月  26 22:31 uwsgi_temp
1
2
3
4
5
6
7
8
9
10
11
12

其中:

  • sbin:存放的是可执行文件,也就是我们平时启动 Nginx 的地方
  • conf:存放的则是各种配置文件
  • logs:存放的是日志文件,例如访问日志,错误日志 ‍ 我们启动 Nginx 的时候,可以使用 -c ​选项指定配置文件:
cd /opt/nginx/sbin
./nginx -c /opt/nginx/conf/nginx.conf
1
2

注意:如果配置文件所在的目录没有权限访问,则不能正常使用 Nginx。

# 默认配置文件

默认的配置文件是 conf/nginx.conf,其中井号 # ​开头的是注释,注释有非常多,这里为了方便,我们去掉注释,此时默认配置文件内容如下:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

‍ 根据上述文件,我们可以很明显的将 nginx.conf 配置文件分为三部分:

  • 全局块:配置服务器整体运行的配置指令
  • events 块:影响 Nginx 服务器与用户的网络连接
  • http 块:分为 http 全局块 和 server 块 ‍

# 全局块

全剧块指的是从配置文件开始到 events 块之间的内容,主要是设置一些影响 nginx 服务器整体运行的配置指令,例如:

  • 配置运行 Nginx 服务器的用户(组):例如是以 root 用户运行还是非 root 的其他用户运行
  • 允许生成的 worker process 数:默认配置里,只配了这个参数,后面会讲什么是 worker 以及该参数的作用
  • 进程 PID 存放路径
  • 日志存放路径和日志级别(日志级别可选)
  • ........ ‍ 示例:
user  nobody;
worker_processes  1;
pid        logs/nginx.pid;
# error_log  logs/error.log;
error_log  logs/error.log  info;
1
2
3
4
5

# events 块

events 块涉及的指令主要影响 Nginx 与用户的网络连接,常用的设置有:

  • 是否开启对多 work process 下的网络连接进行序列化
  • 是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求
  • 每个 wordprocess 可以同时支持的最大连接数等
events {
    worker_connections  1024;
}
1
2
3

上述例子就表示每个 work process 支持的最大连接数为 1024,这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置,后续我们再详细介绍。

# http 块

这算是 Nginx 服务器配置中最频繁的部分。代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。主要分为 http 全局块 和 server 块。示例:

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

‍

# http 全局块

http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等:

include       mime.types;
default_type  application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;
1
2
3
4
5
6
7
8
9
10
11
12
13

‍

# server 块

简单来说,server 块就是处理请求的。一个 server 对应一个服务,可以配置多个 server,例如一个 server 负责处理项目 1 的请求,另一个 server 负责项目 2 的请求,这样一个服务器可以处理多个项目的请求,而不用多台服务器分别处理各个项目的请求,节省服务器硬件成本。

用 Nginx 中一些专业的术语来说的话,每个 server 块就相当于一个虚拟的主机。 ‍ 每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块:

  1. 全局 server 块 最常见的配置是本虚拟机主机的监听配置,和本虚拟主机的名称,或 IP 配置。
  2. location 块 :一个 server 块可以配置多个 location 块。location 块的主要作用是基于 Nginx 收到的请求字符串进行匹配,对特定的请求进行处理,例如地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。 ‍ 示例:
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14

‍ 说明:这个 http 块中包含一个 server 块,这个 server 块监听 80 端口;然后有一个 location 块,路径是一个斜线 /​,也就是当用户访问 /​ 的时候,要怎么处理。

可以配置度多个 server 块:

 location / {
    root   html;
    index  index.html index.htm;
}
 
 location /test {
    root   html;
    index  index.html index.htm;
}
1
2
3
4
5
6
7
8
9

这样配置了用户访问 /​ 和 /test​ 时,要怎么处理请求,root 指的是静态资源的路径(在这里是 /opt/nginx/html​),index 指的是默认的文件。

这样,用户访问 /​ 的时候,Nginx 会返回 /opt/nginx/html/index.html​,也就是我们看到的页面:

​​ ‍

# cat /opt/nginx/html/index.html 

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

​​ ‍

# location 指令

location 的语法如下:

location [ = | ~ | ~* | ^~ ] uri {
}
1
2

‍ 说明:

  • ​=​:用于不含正则表达式的 URI 前,要求请求字符串与 URI 严格匹配,如果匹配成功,就停止继续向下搜索其他 location 块的 URI,并立即处理该请求。
  • ​~​:用于表示 uri 包含正则表达式,并且区分大小写。
  • ​~*​:用于表示 uri 包含正则表达式,并且不区分大小写。
  • ​^~​:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 URI 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 URI 和请求字符串做匹配。

注意:如果 uri 包含正则表达式,则必须要有 ~​ 或者 ~*​ 标识。

其实,nginx.conf​ 中的注释中就包含了一个个 Nginx 的配置例子,后续我们会详细介绍。 ‍

# 可视化配置 Nginx

由于 Nginx 的配置非常多,因此市面上出现了不少可视化配置 Nginx 的工具和网站。

例如:do.co/nginxconfig (opens new window)

开源地址:https://github.com/digitalocean/nginxconfig.io (opens new window),截止到 2024-9-4,已经有 27k 的 star 了 ‍

上次更新: 2025/6/3 09:31:54
Nginx 的安装和启停
Nginx 配置反向代理

← Nginx 的安装和启停 Nginx 配置反向代理→

最近更新
01
新闻合订本 2025-10
10-31
02
2025 年 10 月记
10-30
03
用 AI 批量优化思源笔记排版
10-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式