运维 --- Nginx介绍和在CentOS/Redhat下安装

本文涉及的产品
云防火墙,500元 1000GB
简介: 运维 --- Nginx介绍和在CentOS/Redhat下安装

介绍

读音

  • Nginx 读作 “engine-ex”。

用途

  • Nginx 是一种用于处理并发请求的软件。

使用原因

  • Nginx 最重要的功能是反向代理和负载均衡,反向代理将允许我们在端口 80 上托管多个域名,同时使用不同的语言编写后端服务,负载均衡可以把多个提供相同功能的后端服务配置成彼此冗余。
  • Nginx 负责访问日志、黑名单、负载平衡和提供静态文件访问,后台 Web 服务则可专注于业务逻辑处理,Nginx 是动静分离架构的入口程序。
  • Nginx 支持高并发,内存占用小。
  • Nginx 支持配置文件动态修改。

Nginx中的两中进程

nginx 在启动后,会以 daemon 的方式在后台运行,后台进程包含一个 master 进程和多个 worker 进程,worker 进程以非 root 用户运行,可以在配置文件中配置运行 worker 进程的用户。

主进程(master process):负责加载和分析配置文件、管理 worker 进程,平滑升级。

工作进程(worker process):接收客户端请求、将请求一次送入各模块过滤、I/O 调用、数据缓存、发送响应。

主要功能:

主进程:

  1. 读取 Nginx 配置文件并验证其有效性和正确性
  2. 按照配置启动、管理和关闭工作进程
  3. 接受外界指令,比如重启、升级及关闭服务器等指令
  4. 不中断服务,实现平滑升级,重启服务并应用新的配置
  5. 开启日志文件

工作进程:

  1. 接收处理客户端的请求
  2. 将请求以此送入各个功能模块进行处理
  3. IO 调用,获取响应数据
  4. 与后端服务器通信,接收后端服务器的处理结果
  5. 缓存数据,访问缓存索引,查询和调用缓存数据
  6. 发送请求结果,响应客户端的请求
  7. 接收主程序指令,比如重启、升级和退出等

cache相关进程:cache loader (缓存索引重建)与 cache manager( 缓存索引管理)组成

  • Cache loader 在 Nginx 服务启动后由主进程生成,根据本地磁盘上缓存建立索引元数据库后退出。
  • Cache manager 在元数据更新完成后,对元数据是否过期做出判断。

Nginx中的模块结构

Nginx 的各种功能和操作都由模块来实现。

Nginx 的模块从结构上分为核心模块、基础模块和第三方模块。

核心模块: HTTP 模块、EVENT 模块和 MAIL 模块

基础模块: HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块

第三方模块: HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模块及用户自己开发的模块。

这样的设计使得Nginx更方便开发和扩展。

安装(Redhat/CentOS)

两种方式

默认系统仓库安装(方便、但是通常提供的版本较旧)和nginx.org官方仓库安装(设置一次yum仓库,但是版本会是最新的)

在安装过程中如果遇到选项直接y,确认即可。

默认仓库安装

  1. 安装 EPLE 存储库
    EPEL 代表企业 Linux 的额外包。安装 EPEL 将确保 RHEL 或 CentOS 上的 Nginx 保持最新。
$ sudo yum install epel-release
  1. 更新存储库(需要消耗较长时间,请耐心等待)
$ sudo yum update
  1. 安装 Nginx
$ sudo yum install nginx
  1. 检查版本确认是否安装完成
$ sudo nginx -v

修改yum配置安装

  1. 通过在 /etc/yum.repos.d 中创建文件 nginx.org 为 RHEL 或 CentOS 创建 yum 存储库。
$ sudo vi /etc/yum.repos.d/nginx.repo
  1. 在nginx.repo中添加以下几行代码
[nginx]  
name=nginx repo  
baseurl=https://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/  
gpgcheck=0  
enabled=1  
  1. 其中这里,
  • mainline 指向 NGINX 开源的最新主线版本,如想获得最新的稳定版本可以删除/mainline。
  • OS是操作系统的名称,即 rhel 或 centos
  • OSRELEASE是版本号,例如 6、6._x、7、7.x 等。
  1. 如,要获取 CentOS 7 的最新主线包,请使用以下配置。
[nginx]  
name=nginx repo  
baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/  
gpgcheck=0  
enabled=1  
  1. 保存
    按下ESC 并 输入 :wq保存退出。
  2. 更新存储库
$ sudo yum update  
  1. 安装 Nginx
$ sudo yum install nginx
  1. 检查版本确认是否安装完成
$ sudo nginx -v

验证Nginx的安装

检查Nginx是否正在运行

$ ps -ef| grep nginx

如果有如下输出,则已经运行。

root      95217      1  0 19:02 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx     95219  95217  0 19:02 ?        00:00:00 nginx: worker process
root      95284   8038  0 19:08 pts/0    00:00:00 grep --color=auto nginx

如果只是输出一行,则没有运行

root      95328   8038  0 19:10 pts/0    00:00:00 grep --color=auto nginx

也可以使用

$ systemctl status nginx.service 

查看nginx的运行状态,如果有如下输出,就是正在运行。

Active: active (running) 

Nginx启动与重启

启动

这里以CentOS7及以上版本进行说明。

手动启动

$ sudo systemctl start nginx

手动启动只是启动这一次,当系统进行重启后,nginx服务并不会维持在运行状态。而对于nginx来说,我们一般是期望它是开机自启动的。

设置开机自启动

$ sudo systemctl enable nginx.service

源码编译安装的 nginx 启动命令

$ sudo nginx -s start

关闭

普通关闭

$ sudo systemctl stop nginx

向 Nginx 主进程发送 QUIT(正常关机)信号

$ kill -QUIT $( cat /var/run/nginx.pid )

源码编译安装的 nginx 停止命令

$ sudo nginx -s stop

重启

$ sudo systemctl restart nginx

重新加载

$ sudo systemctl reload nginx

源码编译安装的 nginx 重载命令

$ sudo nginx -s reload

查看nginx配置

每当我们对 Nginx 服务器的配置文件进行更改或编辑时,最好在重新启动或重新加载服务之前测试配置。

输出结果:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果有任何错误,这些命令将打印详细消息。

访问页面

如果没有出错的话,我们可以尝试去访问Nginx的页面。

这里查看80端口的防火墙是否已经打开了

$ sudo firewall-cmd --query-port=80/tcp

如果输出yes的话说明防火墙对80端口打开,如果没开就需要打开80端口的防火墙

$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙(因为我们打开了一个端口,只有在重启过后才能正常访问)

$ sudo firewall-cmd --reloa

再次查看80端口是否被放行,这次输出结果应该为yes

$ sudo firewall-cmd --query-port=80/tcp

查看自己的虚拟机或者是服务器的ip

$ sudo ifconfig

我的是这个

然后使用浏览器访问这个ip,就会得到Welcome to CentOS,不同的Nginx初识页面不同。如果是Welcome to Nginx,也是可以正确访问的。

参考教程和文档:

Nginx教程

Nginx中文文档


目录
打赏
0
0
0
0
5
分享
相关文章
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
59 26
CentOS 7.8下使用kubeadm安装Kubernetes 1.26
这就是所有的前线报告,冒险家们,你们已经做好准备,开始在CentOS 7.8上通过Kubeadm安装Kubernetes 1.26的挑战了吗?走上这段旅程,让你的代码飞翔吧。
50 16
破防了!原来CentOS联网设置竟藏在这个路径?网友:5年运维都白干了!
默认情况下,新装的 CentOS 无法直接上网。可通过点击桌面右上角的网络图标,启动 `eth0` 连接网络。为实现自动连接,右键该图标选择“编辑连接”,在 `System eth0` 设置中勾选“自动连接”。这样配置后,系统重启也能自动联网。
74 19
破防了!原来CentOS联网设置竟藏在这个路径?网友:5年运维都白干了!
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
43 10
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
### 安装VMtools的作用及步骤 安装VMtools可以实现Windows与CentOS之间的字符串和命令粘贴、文件夹共享等操作。在CentOS中,通过VMware菜单栏选择“VMware Tools”,将下载的压缩包拷贝到`/opt`目录并解压。接着进入终端,使用`./vmware-install.pl`命令完成安装。安装后重启系统,即可实现Windows与CentOS之间的字符和文件共享。具体步骤包括解压文件、启动命令行终端、安装VMtools以及配置文件共享。
89 16
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
在CentOS 7.9中安装sshpass教程
如果在控制台显示出sshpass的使用方法,那就说明我们的大餐已经准备好,sshpass已经成功安装。 以上就是在 CentOS 7.9 中安装 sshpass 的彩色步骤,专业而生动,就像大厨在厨房一样顺利。
46 8
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
142 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
如何从CentOS7升级到8?CentOS8最新安装教程
从CentOS 7升级到8只需三步:清理系统、更换软件包及存储库、安装新内核与发布版本。首先确保系统最新并清理冗余包,接着替换基础系统包为CentOS 8版本,最后通过DNF工具完成内核更新与系统同步。整个过程需在终端执行,建议升级前备份VPS快照以防数据丢失。此方法可避免重装系统导致的数据清除问题,实现平滑升级。
82 6
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
217 25
|
2月前
|
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
99 20
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等