Nginx基础详解1(单体部署与集群部署、负载均衡、正反代理、nginx安装)

本阶段的任务

1.学会集群的操作概念

2.完成对Nginx的入门操作

3.使用Nginx实现集群和负载均衡

4.使用Nginx实现高可用的方案

目录

1.单体部署与集群部署

1.1单体部署的概念

1.2单体部署的优缺点

1.3集群部署的概念

1.4集群部署的优缺点

1.5集群部署需要注意的点

1.5.1会话需要分布

1.5.2保证内网互通

1.5.3尽量采用定时任务

2.Nginx基础知识(理论)

2.1.什么是Nginx

2.2.Nginx功能

2.3.常见的服务器

2.3.1web服务器(提供网页访问服务。)

2.3.2应用服务器(运行企业级应用)

2.3.3数据库服务器(存储和处理数据)

2.3.4FTP服务器(文件传输服务)

2.3.5邮件服务器(电子邮件服务)

2.3.6文件服务器(文件共享服务)

2.3.7虚拟化服务器(虚拟机管理)

2.3.8容器化服务器(容器管理与部署)

2.4正向代理与反向代理

2.4.1正向代理

2.4.2反向代理

2.5正反代理的区别

2.6验证反向代理服务

2.7反向代理之路由

3.Nginx安装

3.1进入官网下载nginx的文件(默认你的Centos系统已经换源了)

3.2下载相关的依赖工具

3.2.1下载语法

3.3解压并编译

3.3.1解压

3.3.2创建临时目录命令

3.3.3输入配置命令

3.3.4编译并安装

3.3.5判断nginx的生成的位置

3.4启动nginx服务

3.4.1进入sbin目录

3.4.1.1启动nginx可能出现的报错

[3.4.1.2 nginx的注意事项](#3.4.1.2 nginx的注意事项)

3.5验证nginx网站


1.单体部署与集群部署

1.1单体部署的概念

单体部署是指所有的业务全部写在一个项目中,部署服务到一台服务器上,适用于业务量较小的企业。

上图中,所有的服务和资源都集中在一个单一的服务器上,这使得部署和管理变得相对简单。但是,这种架构的缺点是扩展性有限,如果流量增加或需要更多的计算资源,可能需要整个系统停机进行扩展。此外,如果服务器出现故障,整个应用程序都会受到影响,导致服务不可用。

1.2单体部署的优缺点

优点:

简单性、易于部署和维护,以及较好的性能,因为所有模块都在同一个应用中运行,减少了外部调用的开销,如果线上出现问题能够及时修复并迭代,并且对于项目的打包也方便(直接var包丢给运维上线即可)。

缺点:

  1. 单体部署的缺点在于扩展性差,随着应用程序规模的扩大,单体架构可能会遇到性能和可扩展性问题,并发能力有限。
  2. 单体架构的应用程序所有功能依赖于一个进程,一旦出现问题,整个应用程序可能会崩溃,存在可靠性差的问题。
  3. 随着应用程序的复杂度增加,代码库会变得越来越庞大和复杂,导致维护困难。

1.3集群部署的概念

集群部署则是将同一个业务部署在多个服务器上,不同的服务器运行同样的代码,共同承担负载。集群部署的主要目的是提高系统的可用性和可扩展性。

和上图一样,集群的部署就像是造一台汽车,方向盘和四个车轮我们让四个人来完成,这样效率是最高的,而方向盘和主驾驶的座位我们让一个人完成就可以了,因为在汽车内是连着的而且都在内部,而音响、电池和发动机我们可以让三个人来处理,一个人处理内部的音响,剩余一个人处理内部的发动机,而最后一个人处理底盘的电池,在计算机集群系统中这里的"人"代表的就是服务器,多个"人"组成的组就像是分布式的服务器集群。来自多个client的请求如果一台服务器处理不了的话可以让多个服务器进行处理,这样既提高了效率又能最大程度的减轻负载而且还有更小概率的阻塞情况。

1.4集群部署的优缺点

优点:

当一台服务器发生故障时,其他服务器可以继续提供服务,从而提高了系统的高可用性。此外,集群部署可以通过负载均衡技术分散请求到多台服务器,提高了单位时间内执行的任务数,提升了效率,而且使用了集群的服务器扩展性也会更高。

缺点:

集群部署的缺点包括配置和管理相对复杂,需要更多的硬件资源,以及可能影响数据一致性。集群部署中的每个节点负载相同,但具体业务的访问量可能相差很大,这可能会造成资源浪费。

1.5集群部署需要注意的点

1.5.1会话需要分布

在集群部署中,使用分布式会话是必要的,因为它允许会话数据在多个服务器节点间共享。这样做可以避免因单个节点故障而导致的会话丢失,同时确保在负载均衡的情况下用户请求可以均匀分配到集群的任何节点,而不会因会话数据不连续而影响用户体验。此外,分布式会话还支持应用程序的水平扩展,使得系统能够根据需要动态地添加或移除节点,而不会中断服务。总之,分布式会话提高了Web应用的可用性、可靠性和伸缩性。

1.5.2保证内网互通

集群式服务器需要保证内网互通,主要是因为集群环境中的多个节点需要频繁地进行数据交换和协同工作(内网不同是无法实现集群的,就像是一个团队一样,团队内部都互相不认识,那怎么可能一起正常的工作呢?)。例如,当实施负载均衡时,不同的节点要共同处理用户请求,这就需要它们之间能够快速、可靠地通信。此外,为了实现分布式会话管理和数据一致性,节点间也需要直接通信来同步会话状态和数据。还有,集群中的服务发现、故障转移、状态监控和日志收集等运维操作,都依赖于一个稳定且高效的内部网络。因此,内网互通对于集群的整体性能、可靠性和可管理性至关重要。

1.5.3尽量采用定时任务

集群式服务器采用定时任务主要是为了自动化管理和优化集群的操作。这些任务包括自动化执行维护工作,如数据备份、日志清理和性能监控,以确保集群的健康和高效运行。定时任务有助于预防故障、管理资源、同步数据、调度批量作业,以及执行安全相关的检查和更新。通过这种方式,集群可以自我调整以适应变化的负载,同时减少人为错误和干预,从而提高整体的可靠性和稳定性。


2.Nginx基础知识(理论)

2.1.什么是Nginx

Nginx也被称为engine x,是一个高性能的HTTP和反向代理的Web服务器,同时也会提供IMAP/POP3/SMTP服务。

2.2.Nginx功能

Nginx 是一款高性能的 HTTP 和反向代理服务器,它的主要功能包括:

  1. 反向代理:Nginx 可以作为反向代理服务器,将客户端的请求转发到后端的一个或多个服务器上,并将后端服务器的响应返回给客户端。
  2. 负载均衡:Nginx 能够在多个后端服务器之间分配请求,从而提高网站或应用的可用性和扩展性。
  3. 静态资源服务:Nginx 擅长于提供静态文件(如图片、CSS、JavaScript 文件等),可以作为静态资源服务器使用。
  4. HTTP缓存:Nginx 可以对动态内容进行缓存,减少后端服务器的负载,提高响应速度。
  5. SSL/TLS 终端代理:Nginx 支持 SSL/TLS 协议,可以用于加密客户端和服务器之间的通信。
  6. Web服务器:Nginx 支持 SSL/TLS 协议,可以用于加密客户端和服务器之间的通信。
  7. 邮件代理服务器:Nginx 支持 SSL/TLS 协议,可以用于加密客户端和服务器之间的通信。
  8. API网关:Nginx 可以作为 API 网关,处理、路由和转发 API 请求。
  9. 压缩:Nginx 支持 Gzip 或 Brotli 压缩,可以减少传输文件的大小,加快传输速度。
  10. 安全性:Nginx 提供了一些安全功能,如防止 DDoS 攻击、限制请求速率(限流)、防爬虫等。
  11. 模块化设计:Nginx 具有模块化的设计,可以通过安装和配置不同的模块来扩展其功能。
  12. 高可用性和性能:Nginx 以其高性能和低内存占用而闻名,非常适合处理大量并发请求。
  13. 健康检查:Nginx 可以定期检查后端服务的健康状态,自动停止向不健康的服务器转发请求。
  14. 异步处理:Nginx 采用异步非阻塞的事件处理机制,能够支持数以万计的并发连接。

Nginx最常用的功能我从网上扒了一张图(如下)

上图客户端通过HTTP请求访问网络服务的流程。客户端首先发起一个HTTP请求,这些请求可能是用户从某些前端中发来的请求报文,如ios、Android、Html5语言构成的网页、小程序等。这些请求会被Nginx服务器接收。Nginx是一个高性能的反向代理服务器(理解成网关也可以),它负责将请求分发到后端的应用服务器,这些服务器可能是基于Node.js或Java等技术构建的。应用服务器处理这些请求,并可能需要访问数据库服务来执行数据查询或存储操作。

2.3.常见的服务器

2.3.1web服务器(提供网页访问服务。)

  • Apache HTTP Server:非常流行的开源Web服务器。
  • Nginx:高性能的Web服务器和反向代理服务器。
  • Microsoft Internet Information Services (IIS):Windows平台上的Web服务器。

2.3.2应用服务器(运行企业级应用)

  • JBoss(现在称为WildFly):一个开源的应用服务器,支持Java EE规范。
  • Apache Tomcat:一个流行的开源Java Servlet容器。
  • GlassFish:Oracle提供的开源Java EE应用服务器。
  • WebLogic:Oracle提供的企业级应用服务器。
  • WebSphere:IBM提供的企业级应用服务器。

2.3.3数据库服务器(存储和处理数据)

  • MySQL:流行的开源关系数据库管理系统。
  • PostgreSQL:一个高度可扩展的开源对象关系数据库系统。
  • Microsoft SQL Server:Microsoft提供的数据库服务器。
  • Oracle Database:Oracle公司提供的数据库服务器。
  • MongoDB:一个流行的NoSQL数据库。

2.3.4FTP服务器(文件传输服务)

  • ProFTPd:一个广泛使用的开源FTP服务器。
  • vsftpd:另一个流行的开源FTP服务器。
  • FileZilla Server:一个功能丰富的FTP服务器。

2.3.5邮件服务器(电子邮件服务)

  • Postfix:一个广泛使用的邮件传输代理。
  • Sendmail:一个历史悠久的邮件传输代理。
  • Microsoft Exchange Server:一个企业级的邮件和日历服务器。

2.3.6文件服务器(文件共享服务)

  • Samba:允许Windows和UNIX/Linux系统共享文件的服务器软件。
  • NFS(Network File System):一个分布式文件系统协议。

2.3.7虚拟化服务器(虚拟机管理)

  • VMware ESXi:VMware的服务器虚拟化平台。
  • Microsoft Hyper-V:Microsoft的服务器虚拟化技术。
  • Xen:一个开源的虚拟化平台。

2.3.8容器化服务器(容器管理与部署)

  • Docker:一个开源的应用容器引擎。
  • Kubernetes:一个开源的平台,用于自动化部署、扩展和管理容器化应用程序。

2.4正向代理与反向代理

2.4.1正向代理

如上图所示:

客户端首先向代理服务器发送请求,而不是直接向目标服务器发送。代理服务器(Nginx)接收到请求后,会根据设定的规则和策略来处理这些请求,可能包括缓存请求以提高响应速度、过滤不适宜的内容、控制访问权限等。处理完毕后,代理服务器再将请求转发到目标服务器。目标服务器对请求做出响应,并将结果返回给代理服务器,最后由代理服务器将响应内容转发回客户端。通过这种方式,正向代理不仅帮助客户端隐藏了真实身份,还提供了额外的安全和性能优化功能。

上述的这种方式目标服务器只知道代理服务器传来请求了,而不知道是哪台客户机给的代理服务器请求,目标服务器接收到请求之后给出相应到代理服务器,代理服务器返还相应给对应的客户机,客户机也和目标服务器一样,只接收相应弹出相应的网页或者其他结果即可。

如果还是不理解,我直接来个比喻吧:

客户端就和新生的小动物一样,它们睁不开眼,谁给它奶喝它们就张嘴就行了,但是不知道具体是谁给喂的奶,代理服务器接收到客户端"要喝奶"的请求就转发出去即可,目标服务器只负责喂给来自代理服务器的小动物奶,而不在乎是哪个小动物,目标服务器响应这些请求并提供资源,但它们不知道这些请求具体来自哪个客户端。这样的机制既保护了客户端的隐私,也简化了客户端获取资源的过程。

2.4.2反向代理

在上图中,反向代理服务器作为客户端与网站应用服务器之间的中间层,它接收客户端的请求并将其转发给后端的网站应用服务器。在发给空闲IP的网站服务器上。客户端通常不知道请求被代理,而网站应用服务器处理请求并直接将响应返回给反向代理,再由反向代理转发给客户端。这种机制不仅提高了网站的可用性和性能,还增强了安全性,因为客户端无法直接看到后端服务器,从而保护了服务器免受直接攻击。

如果还是不理解,我再来个比喻吧:

客户机还是等待喂奶的小动物,它仅仅需要将喂奶的这条讯息发送给反向代理服务器,服务器交给网站的应用服务器,网站应用服务器就像是奶妈,而且因为是集群服务器,所以可以类比成多个奶妈,哪个奶妈现在空闲就去喂奶,但是奶妈也不知道给谁喂的奶,小动物也不知道是谁给它喂的奶,它们都只知道通过反向代理服务器能完成自己的需求或者任务(喂奶和喝奶)而不在乎是谁。

再来一个比喻(如下图):

学生(用户)想要报名参加某个课程,他们提交报名表(发起请求)。教务处(反向代理服务器)收到报名表后,根据课程的容量、教室的可用性以及教师的安排,决定将学生分配到哪个教室(访问哪个后端服务器)。学生并不知道他们将被分配到哪个具体的教室,他们只需要知道将报名表(请求)交给教务处,教务处会为他们安排好一切,他们只等着背包入学即可。

2.5正反代理的区别

正向代理主要代表客户端向目标服务器发起请求。客户端需要明确配置并使用正向代理,因此它们知道代理的存在。正向代理可以隐藏客户端的真实身份,保护其隐私,并且可以用于访问控制和内容过滤。它常用于客户端需要访问互联网但需要控制或过滤访问内容的场景。

反向代理则代表目标服务器接收来自客户端的请求。客户端通常不知道反向代理的存在,它们直接与反向代理通信,就像与目标服务器通信一样。反向代理可以进行负载均衡,将请求分发到多个后端服务器,并提供额外的安全层,如SSL加密和防DDoS攻击。它常用于Web服务器集群,以提高网站的可用性和性能。

++总结来说,正向代理更侧重于客户端的需求,如隐私保护和访问控制,而反向代理更侧重于服务器的需求,如负载均衡和安全性。正向代理对客户端是透明的,而反向代理对客户端是不透明的。++

2.6验证反向代理服务

上面的反向代理说明了上网站发出的请求不一定必须是同一台服务器进行处理的,而是根据服务器的位置,当前状态等做出的相应,由最优的服务器处理本机的上网请求报文。

看我上下两张图片:基本上相隔了10s左右吧,本机都是ping百度的服务器,百度公司内部的服务器就会根据集群服务器中每一台的状态,挑选出一个最优的服务器来处理你本机的IP请求报文,所以我们会看见目的ip服务器一台是39.156.66.14,而过几秒在去ping又变成了39.156.66.18了。

2.7反向代理之路由

还是据上图这样的例子,浏览器会发送一个客户端的三个请求报文,简写位shop、center和/image。这三个报文经过反向代理服务器nginx之后会根据nginx的内部的识别信息对三个请求进行识别,分发到不同的网站应用服务器集群上,每个网站应用服务器集群找一台最优的服务器对发送的请求报文进行解析和编译将结果重新返回到Nginx代理服务器上,nginx再将接收的解析完成的请求报文给到客户机的浏览器界面上。而像image、media等这样的媒体资源我们统称为静态资源,如果该网站做的好的话会有动静分离的功能,这样服务器的效率会更高。

动态资源的种类:

网页:如ASP、PHP、JSP、Python等脚本生成的页面。

数据库查询结果:如从MySQL、Oracle、MongoDB等数据库中检索的数据。

用户提交表单:如注册、登录、搜索等表单处理结果。

API响应:如RESTful API或GraphQL API返回的数据。

个性化内容:根据用户偏好或行为定制的内容。

实时数据:如股票价格、天气预报等实时更新的数据。

应用生成的文件:如服务器端生成的PDF报告或图像。

静态资源的种类:

图片:如JPEG、PNG、GIF、SVG等格式的图片。

样式表:如CSS文件。

JavaScript文件:如JavaScript或库文件(例如jQuery)。

字体文件:如WOFF、WOFF2、TTF等格式的字体。

多媒体文件:如MP3、MP4、OGG等音频和视频文件。

HTML文件:通常,如果HTML文件不包含服务器端脚本,则被视为静态资源。

客户端生成的文件:如客户端JavaScript生成的内容。

文档:如PDF、Word、Excel等格式的文档。


3.Nginx安装

++前提是你必须有一台Linux虚拟,我之前搭建了一个全新的CentOS7的虚拟机,具体虚拟机的搭建方法大家可以去看++

第一篇:Linux从零手搓,我们共同进步!_linux入门教程-CSDN博客

3.1进入官网下载nginx的文件(默认你的Centos系统已经换源了)

在虚拟机里面,进入浏览器输入网址nginx.org下载nginx的源文件(点我跳转)点击右侧download跳转到下载界面。

跳转过来之后点击nginx-1.26.2下载Linux版本的nginx。记录nginx的安装目录。

3.2下载相关的依赖工具

nginx的依赖工具主要有三大类:++gcc-c++、pcre和zlib++

gcc-c++对于nginx的作用:

Nginx 主要使用 C 语言编写,但在编译过程中可能需要 C++ 编译器。gcc-c++ 是 GNU 编译器集合(GCC)的一部分,它用于编译 C++ 程序。尽管 Nginx 本身可能不直接使用 C++,但一些第三方模块或 Nginx Plus(Nginx 的商业版本)可能包含 C++ 代码。因此,在编译 Nginx 时,gcc-c++ 可能是必须的,以确保所有模块都能正确编译。此外,gcc 提供了优化选项,可以帮助提高 Nginx 的性能。

pcre++对于nginx的作用:

PCRE 是一个用 C 语言编写的库,它实现了 Perl 兼容的正则表达式。Nginx 在处理 HTTP 请求和配置文件时广泛使用正则表达式,例如用于 URL 重写、服务器配置的匹配等。PCRE 提供了强大的正则表达式处理能力,这对于 Nginx 的灵活性和强大的文本处理功能至关重要。因此,在编译 Nginx 之前,需要确保已经安装了 PCRE 库,以便 Nginx 能够正确地处理配置中的正则表达式。

zlib对于nginx的作用:

zlib 是一个广泛使用的压缩库,它对 Nginx 的主要作用是提供响应内容的压缩功能。通过使用 zlib,Nginx 能够对传输的数据进行压缩,从而减少网络传输的数据量,节省带宽,并加快客户端加载网页的速度。Nginx 支持对文本内容如 HTML、CSS、JavaScript 文件进行压缩,并且允许管理员设置不同的压缩级别以平衡压缩效果和服务器性能。此外,Nginx 还可以根据客户端请求的 Accept-Encoding 头部进行条件压缩,并设置 Vary: Accept-Encoding 响应头部,以确保缓存和代理服务器正确处理压缩与未压缩的内容。为了使 Nginx 能够执行压缩操作,通常需要在编译 Nginx 时包含 zlib 支持。

3.2.1下载语法

yum -y install gcc-c++

yum -y install pcre pcre-devel

yum -y install zlib zlib-devel

因为我已经下载完成了,所以我再下载的话就会弹出"软件包***已是最新版本无需任何处理",剩余的我就不演示了,手敲即可。

3.3解压并编译

3.3.1解压

记住之前安装nginx的路径并cd到该路径下进行解压,语法如下

tar -zxvf nginx-***

nginx版本如果不知道的话tar前可以先使用"ll"命令进行查看和验证路径的正误。

解压完成之后再使用"ll"查看命令就会发现多出一个没有tar.gz后缀的文件,这个就是我们的nginx解压后的软件包

3.3.2创建临时目录命令

接下来我们需要创建一个临时目录,防止启动nginx时的报错

mkdir /var/temp/nginx -p

3.3.3输入配置命令

完成了临时目录的创建之后我们需要输入相关的配置命令来对nginx服务器进行初始化(初始化nginx的存放目录、配置nginx.pid的路径、初始化日志等信息的存放路径等)

./configure \

> --prefix=/usr/local/nginx \

> --pid-path=/var/run/nginx/nginx.pid \

> --lock-path=/var/lock/nginx.lock \

> --error-log-path=/var/log/nginx/error.log \

> --http-log-path=/var/log/nginx/access.log \

> --with-http_gzip_static_module \

> --http-client-body-temp-path=/var/temp/nginx/client \

> --http-proxy-temp-path=/var/temp/nginx/proxy \

> --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

> --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

> --http-scgi-temp-path=/var/temp/nginx/scgi

一下是对这些命令的解释:

./configure \

--prefix=/usr/local/nginx \ # 设置Nginx安装的前缀目录为 /usr/local/nginx --pid-

path=/var/run/nginx/nginx.pid \ # 设置Nginx主进程的PID文件路径 --lock-

path=/var/lock/nginx.lock \ # 设置Nginx的锁文件路径,防止被恶意篡改或者误操作 --error-

log-path=/var/log/nginx/error.log \ # 设置错误日志文件的路径 --http-log-

path=/var/log/nginx/access.log \ # 设置访问日志文件的路径 --with-http_gzip_static_module \

启用gzip静态模块,用于在线压缩响应数据(输出数据流) --http-client-body-temp-

path=/var/temp/nginx/client \ # 设置客户端请求体临时文件的路径 --http-proxy-temp-

path=/var/temp/nginx/proxy \ # 设置代理临时文件的路径 --http-fastcgi-temp-

path=/var/temp/nginx/fastcgi \ # 设置FastCGI临时文件的路径 --http-uwsgi-temp-

path=/var/temp/nginx/uwsgi \ # 设置uWSGI临时文件的路径 --http-scgi-temp-

path=/var/temp/nginx/scgi \ # 设置SCGI临时文件的路径

每个选项都以"++--++ "开头,后面跟着相应的参数值。这些参数用于指定Nginx服务器的配置,包括安装路径、日志文件路径、临时文件路径以及启用的模块等。这些配置在编译Nginx之前需要设置好,以便生成符合需求的Nginx二进制文件。++而'\'则表示当行的命令还未结束,仍需要输入剩余的命令。++

输入完成之后回车即可。再次使用ll命令查看之后我们就会发现生成了新的文件**++Makefile++**

3.3.4编译并安装

创建完成临时目录之后就可以开始对目录进行编译了(前提是我们必须ll之后发现了Makefile目录)

make&&make install

3.3.5判断nginx的生成的位置

我们在编译安装完nginx之后因为我们在3.3.3步骤中输入的第一行配置文件中给定了nginx的默认位置

--prefix=/usr/local/nginx \ # 设置Nginx安装的前缀目录为 /usr/local/nginx

所以我们安装完成的程序的目录即为/usr/local/nginx,如果你的有变化或者不确定可以使用whereis nginx命令来查看

whereis nginx

3.4启动nginx服务

3.4.1进入sbin目录

++nginx目录下共有三个文件夹,分别是conf和html以及sbin++(具体解释如下)

1.html:

这个目录通常用于存放静态网页文件,如 HTML 页面、CSS 文件、JavaScript 文件等。Nginx 服务器会从这个目录提供静态内容给客户端。(如下图,longnian.html为我后加的文件,默认是不存在的)。

2.conf:

这个目录包含 Nginx 的配置文件(主要的配置文件解释如下)

nginx.conf:Nginx 的主配置文件,包含了全局的配置指令,如 worker process 数量、日志文件位置、需要加载的模块等。

mime.types:定义了不同文件扩展名对应的 MIME 类型,用于告诉浏览器文件的类型。

fastcgi.conf、scgi_params、uwsgi_params:这些是用于配置 FastCGI、SCGI 和 uWSGI 进程的参数文件。

sites-available 和 sites-enabled:这两个目录用于存放虚拟主机的配置文件。sites-available 存放原始的虚拟主机配置文件,而 sites-enabled 存放启用的虚拟主机配置文件的符号链接。

其他可能的配置文件或目录,用于特定模块的配置(如下图)。

3.sbin(因为我们发现sbin这个文件是绿色的可执行文件):

这个目录包含 Nginx 的可执行文件。

因为我们知道了nginx的安装目录在/usr/local/nginx目录下,所以我们先cd到/usr/local/nginx下,第二步cd到sbin文件下,sbin文件下你输入的nginx命令nginx就可以识别了。

nginx的常用命令:

1.启动 Nginx:

./nginx 或 nginx:在默认配置文件 /usr/local/nginx/conf/nginx.conf 的基础上启动 Nginx。

2.停止 Nginx:

./nginx -s stop:快速停止 Nginx,不等待正在处理的请求完成。

./nginx -s quit:优雅地停止 Nginx,等待正在处理的请求完成后再停止。

3.重新加载配置:

./nginx -s reload:重新加载配置文件,不中断当前的连接。

4.重载 Nginx:

./nginx -s reopen:重新打开日志文件。

5.查看 Nginx 版本:

./nginx -v:查看 Nginx 的版本信息。

6.检查配置文件的语法:

./nginx -t:测试配置文件的语法是否正确。

7.获取 Nginx 的帮助信息:

./nginx -h:显示 Nginx 的帮助信息。

8.查看 Nginx 的运行状态:

nginx -V:显示 Nginx 的版本和配置信息。

9.运行 Nginx 调试模式:

./nginx -g 'daemon off;':在前台运行 Nginx,通常用于调试。

10.查看 Nginx 的主进程 ID:

cat /var/run/nginx.pid:查看 Nginx 主进程的 PID。

11.查看 Nginx 的版本和编译选项:

./nginx -V

12.平滑升级 Nginx:

./nginx -s reopen:平滑升级日志文件。

./nginx -s upgrade:平滑升级 Nginx 到新版本。

13.限制 Nginx 占用的内存:

通过配置文件中的 worker_rlimit_nofile 指令来限制。

14.设置 Nginx 工作模式:

在配置文件中设置 worker_processes 指令来定义工作进程的数量。

15.设置 Nginx 的工作目录:

在配置文件中设置 working_directory 指令来定义工作目录。

上述这些命令仅可以在sbin目录下nginx才可以识别。在启动时可能会出现的问题.

3.4.1.1启动nginx可能出现的报错

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

该问题**++表示nginx默认的80端口已经被占用了++**,一般初始配置的时候不会弹出这样的报错,一般是在我们第二次或者其余时候可能会出现

解决方法:

netstat -tulnp | grep:80或lsof -i :80

查看80端口正在被谁占用,下图表示nginx占用了80端口,即已经启动了nginx服务,不能重复启动,这样我们就可以重启nginx服务即可,语法为./nginx -s reload

如果出现其他服务像是Apache这样默认也是使用80端口的服务,我们就需要systemctl stop Apache停止这样的服务即可。

3.4.1.2 nginx的注意事项

1.如果在云服务器上安装,需要开启默认的nginx端口80

2.如果在虚拟机上安装,则需要关闭防火墙

systemctl stop firewall

3.本地或者mac也需要关闭防火墙

3.5验证nginx网站

同一局域网的客户机输入配置nginx反向代理服务器的IP地址验证是否成功登录,也可以改变内部的文件,更改的方法就是vim到html文件夹下的index.html文件进行编辑即可。

++注:上述图片是我编辑过的主界面,大家看到的应该是Welcome Nginx!++

相关推荐
sinat_384241091 小时前
使用 npm 安装 Electron 作为开发依赖
服务器
朝九晚五ฺ1 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream1 小时前
Linux的桌面
linux
xiaozhiwise2 小时前
Makefile 之 自动化变量
linux
Kkooe2 小时前
GitLab|数据迁移
运维·服务器·git
久醉不在酒3 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
谭震鸿3 小时前
Zookeeper集群搭建Centos环境下
分布式·zookeeper·centos
意疏4 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
虚拟网络工程师4 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb