Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Linux

  • Java

  • 微服务笔记

  • MySQL

  • Nginx

    • Nginx介绍
    • Nginx配置
    • 反向代理与负载均衡
    • 扩容
  • HTML

  • CSS

  • JavaWeb

  • Vue

  • Git

  • 开发规范

  • SpringCloud微服务权限系统

  • bug

  • Software

  • ProgramNotes
  • Nginx
Geeks_Z
2024-04-05

Nginx介绍

Nginx介绍

  • Nginx开源版 http://nginx.org/en/

    官方原始的Nginx版本

  • Nginx plus商业版

    开箱即用,集成了大量功能

  • Open Resty https://openresty.org/cn/

    OpenResty是一个基于Nginx与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。更适用于需要大量二次开发的场景,有极强的扩展性

  • Tengine https://tengine.taobao.org/

    由淘宝网发起的Web服务器项目。它在Nginx (opens new window) (opens new window)的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网 (opens new window) (opens new window),天猫商城 (opens new window) (opens new window)等得到了很好的检验。相比于Open Resty,扩展性不够强,但是能够满足绝多数使用场景

Nginx安装

  • 下载Nginx包

    官网下载地址(opens new window) (opens new window)

    image-20220501140833867

    使用FTP工具将文件上传到虚拟机中

    Termius也提供了FTP的功能,直接将下载的Nginx包拖拽到主机目录中,我这里是放到了root目录下

    image-20220501163732603

  • 解压Nginx包,并安装

    tar -zxvf  nginx-1.21.6.tar.gz #解压到当前目录
    
    cd nginx-1.21.6 #进入解压后的文件夹
    ls #文件夹中的文件:auto     CHANGES.ru  configure  html     man     src CHANGES  conf        contrib    LICENSE  README
    
    1
    2
    3
    4

    安装依赖库

    #安装C编译器
    yum install -y gcc
    
    #安装pcre库
    yum install -y pcre pcre-devel
    
    #安装zlib
    yum install -y zlib zlib-devel
    
    1
    2
    3
    4
    5
    6
    7
    8

    安装

    ./configure --prefix=/usr/local/nginx #使用prefix选项指定安装的目录
    make
    make install
    
    1
    2
    3

    启动

    cd /usr/local/nginx/sbin
    ls # 里面是一个nginx的可执行文件
    ./nginx # 启动这个可执行
    
    1
    2
    3

    关闭防火墙

    systemctl stop firewalld
    
    1

    补充Nginx命令

    ./nginx -s stop #快速停止
    ./nginx -s quit #完成已接受的请求后,停止
    ./nginx -s reload #重新加载配置
    ./nginx -t #检查nginx配置是否正确
    
    1
    2
    3
    4

    查看nginx状态

    ps -ef|grep nginx
    
    1

    启动时:

    image-20220501205303265

    停止时:

    image-20220501205333304

  • 注册系统服务

    通过系统服务的方式启动nginx

    vim usr/lib/systemd/system/nginx.service
    
    1
    [Unit] 
    Description=nginx
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    ExecQuit=/usr/local/nginx/sbin/nginx -s quit 
    PrivateTmp=true
       
    [Install]   
    WantedBy=multi-user.target  # 多用户
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    重新加载系统服务

    systemctl daemon-reload
    
    1

    启动服务

    systemctl start nginx.service
    
    1

    开机启动

    systemctl enable nginx.service
    
    1

Nginx 目录

Nginx一般安装在/usr/local/nginx目录下(安装时--prefix可指定安装目录)

image-20220919122708336

[root@localhost ~]# tree /usr/local/nginx
/usr/local/nginx
├── client_body_temp                 # POST 大文件暂存目录 *_temp #运行时,生成临时文件
├── conf                             # Nginx所有配置文件的目录 其他配置文件可通过那个include关键字,引入到了nginx.conf生效
│   ├── fastcgi.conf                 # fastcgi相关参数的配置文件
│   ├── fastcgi.conf.default         # fastcgi.conf的原始备份文件
│   ├── fastcgi_params               # fastcgi的参数文件
│   ├── fastcgi_params.default       
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types                   # 媒体类型
│   ├── mime.types.default
│   ├── nginx.conf                   #这是Nginx默认的主配置文件,日常使用和修改的文件
│   ├── nginx.conf.default
│   ├── scgi_params                  # scgi相关参数文件
│   ├── scgi_params.default  
│   ├── uwsgi_params                 # uwsgi相关参数文件
│   ├── uwsgi_params.default
│   └── win-utf
├── fastcgi_temp                     # fastcgi临时数据目录
├── html                             # Nginx默认站点目录[静态页面]
│   ├── 50x.html                     # 错误页面优雅替代显示文件,例如出现502错误时会调用此页面
│   └── index.html                   # 默认的首页文件
├── logs                             # Nginx日志目录
│   ├── access.log                   # 访问日志文件
│   ├── error.log                    # 错误日志文件
│   └── nginx.pid                    # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp                       # 临时目录
├── sbin                             # Nginx 可执行文件目录
│   └── nginx                        # Nginx 二进制可执行程序
├── scgi_temp                        # 临时目录
└── uwsgi_temp                       # 临时目录

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
28
29
30
31
32
33

Nginx运行原理

image-20220502111337135

Nginx的进程是使用经典的「Master-Worker」模型,Nginx在启动后,会有一个master进程和多个worker进程。

  • master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
  • worker进程主要处理基本的网络事件,多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般会设置与机器cpu核数一致,这里面的原因与nginx的进程模型以及事件处理模型是分不开的。
#Nginx
上次更新: 2025/02/26, 08:57:57
MySQL问题清单
Nginx配置

← MySQL问题清单 Nginx配置→

最近更新
01
RAIL
02-26
02
IOCTF
02-25
03
DGM
02-25
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式