负载均衡中间件---Nginx

2023-09-20 23:16:49

一.nginx的好处

学习 Nginx 对于一个全栈开发者来说是非常有价值的,下面是一些学习 Nginx 的原因和好处:

  1. 反向代理和负载均衡:Nginx 是一个高性能的反向代理服务器,可以用于将客户端请求转发给多个后端服务器,实现负载均衡。学习 Nginx 可以让您了解如何配置和管理反向代理和负载均衡,以提高应用程序的性能和可靠性。
  2. 静态文件服务:Nginx 可以用作静态文件服务器,可以帮助您有效地提供网站中的静态资源,如 HTML、CSS、JavaScript 和图像文件。学习 Nginx 可以了解如何配置和优化 Nginx 以提供静态文件,并实现网站的快速加载。
  3. 缓存和加速:Nginx 具有强大的缓存功能,可以缓存动态内容以提高响应速度,并减轻后端服务器的负载。学习 Nginx 的缓存功能可以帮助您改善网页响应时间,提高用户体验。
  4. 安全性和访问控制:Nginx 提供了许多安全性和访问控制功能,例如 SSL/TLS 加密、基于 IP 地址的访问控制、访问日志记录等。学习 Nginx 可以帮助您保护您的应用程序免受潜在的安全漏洞和恶意攻击。
  5. 高可用性和容错性:通过 Nginx 的高可用性和容错性特性,您可以实现应用程序的无缝扩展和故障恢复。学习 Nginx 可以帮助您了解如何配置和管理多个 Nginx 实例,以实现高可用性架构和容错机制。
  6. 设置虚拟主机:使用 Nginx,您可以设置和管理多个虚拟主机,即在同一台服务器上托管多个网站。学习 Nginx 可以帮助您了解如何配置和管理虚拟主机,以满足不同网站的需求。

总的来说,学习 Nginx 可以为您提供更强大的工具和技能,以管理和优化您的应用程序和网站。它可以提供更好的性能、可靠性、安全性和扩展性,对于开发和部署现代 Web 应用程序非常有帮助。

二.niginx的安装

以下的操作之前,请将防火墙进行关闭

  • 关闭防火墙
systemctl stop firewalld.service
  • 禁止防火墙开机启动
systemctl disable firewalld.service
  • 放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
  • 重启防火墙
firewall-cmd --reload

ubantu系统安装

我的是ubantu系统要在Ubuntu系统上下载和安装Nginx,可以按照以下步骤进行操作:

  1. 打开终端:您可以使用快捷键Ctrl+Alt+T打开终端。
  2. 更新软件源:运行以下命令以更新软件源和包列表:
   sudo apt update
  1. 安装Nginx:运行以下命令以安装Nginx:
   sudo apt install nginx

需要输入sudo用户密码以及确认安装。

  1. 启动Nginx服务:安装完成后,Nginx服务将自动启动。如果未启动,您可以运行以下命令手动启动:
sudo systemctl start nginx
  1. 验证安装:打开您的Web浏览器,输入服务器的IP地址或域名,如果看到Nginx默认欢迎页面,说明Nginx已成功安装。
    以下是在Ubuntu上安装Nginx时的常见文件路径:

  2. Nginx的配置文件目录: /etc/nginx

  3. 主配置文件:/etc/nginx/nginx.conf

  4. 网站配置文件目录:/etc/nginx/sites-available/ (网站配置文件通常位于此目录中)

  5. 网站启用配置文件目录:/etc/nginx/sites-enabled/ (已启用的网站配置文件通常位于此目录中)

  6. Nginx的网站根目录: /var/www/html
    这是默认情况下Nginx在Ubuntu上用于存储网站文件的根目录。

  7. Nginx的日志文件目录: /var/log/nginx

  8. 访问日志文件:/var/log/nginx/access.log
    8 .错误日志文件:/var/log/nginx/error.log

这时候,打开web localhost:80
在这里插入图片描述
就是安装成功

centos安装

要在CentOS上安装Nginx,可以按照以下步骤进行操作:

  1. 打开终端并使用root用户或具有sudo权限的用户登录到CentOS服务器。
  2. 运行以下命令以更新服务器上的软件包列表:
 sudo yum update
  1. 安装Nginx软件包。运行以下命令:
  sudo yum install nginx

在安装过程中,系统将要求您确认安装。键入“y”并按回车键继续。

4.安装完成后,可以启动Nginx服务。运行以下命令:

  sudo systemctl enable nginx
   sudo systemctl start nginx

这将启动Nginx,并将其配置为在系统引导时自动启动。
至于Nginx的文件位置,以下是一些重要的文件和目录:

  1. Nginx的配置文件目录: /etc/nginx
  2. 主配置文件:/etc/nginx/nginx.conf
  3. 网站配置文件目录:/etc/nginx/conf.d/
  4. 默认站点配置文件:/etc/nginx/conf.d/default.conf
  5. Nginx的网站根目录: /usr/share/nginx/html
    这是默认情况下Nginx用于存储网站文件的根目录。在此目录下,您可以将相应的网站文件和目录放置在适当的位置。
  6. Nginx的日志文件目录: /var/log/nginx
  7. 访问日志文件:/var/log/nginx/access.log
  8. 错误日志文件:/var/log/nginx/error.log

如果觉得麻烦,各个文件太分散了可以编译安装

编译安装

如果您希望将安装的Nginx文件集中在同一个文件夹中,而不是默认的分散位置,可以使用源代码编译安装的方式进行操作。以下是在Ubuntu上将Nginx源代码编译安装到指定文件夹的步骤:

  • 首先,确保您的Ubuntu系统已安装编译Nginx所需的构建工具和依赖项。打开终端,运行以下命令以安装必要的软件包:
sudo apt update
sudo apt install build-essential zlib1g-dev libpcre3-dev libssl-dev
  • 下载Nginx的源代码包。您可以从Nginx官方网站(https://nginx.org/en/download.html)获取最新的稳定版本的源代码包,或者使用以下命令下载特定版本的源代码(请将<version>替换为您所需的版本):
wget http://nginx.org/download/nginx-<version>.tar.gz
  • 解压源代码包。运行以下命令解压下载的源代码包:
tar -zxvf nginx-<version>.tar.gz
  • 进入解压后的源代码目录:
cd nginx-<version>

配置编译选项并指定安装路径。运行以下命令,将Nginx安装到指定的文件夹中,例如

./configure --prefix=/usr/local/nginx
  • 执行编译和安装命令:
    在这里插入图片描述
make
sudo make install

这将会编译Nginx并将其安装到指定的文件夹。

  • 进入安装好的目录 /usr/local/nginx/sbin
    没有权限的加sudo
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置

此时可以再次访问nginx欢迎页面在这里插入图片描述
这种方式bash运行,接下来编辑脚本运行

编写脚本

创建服务脚本

vi /usr/lib/systemd/system/nginx.service

服务脚本内容

[Unit]
Description=nginx - web server
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

重新加载系统服务

systemctl daemon-reload

启动服务

systemctl start nginx.service

开机启动

systemctl enable nginx.service

完成以后就无序在特定路径使用sh脚本启动了

卸载

因为之前为了演示演示指令网络安装,所以是默认的文件路径这样很不方便,所以采用编译安装,先卸载之前安装的
如果您使用 yum 在 CentOS 或者基于 Red Hat 的发行版上安装了 Nginx,可以使用以下命令卸载它:

sudo yum remove nginx

这将从系统中删除 Nginx 及其关联的软件包和配置文件。
如果您使用 apt 在 Ubuntu 或者基于 Debian 的发行版上安装了 Nginx,使用以下命令卸载它:

sudo apt remove nginx

在这里插入图片描述
根据提示卸载完成后就不会在启动了
在这里插入图片描述

这将删除 Nginx 及其关联的软件包和配置文件。
无论使用 yum 还是 apt 进行安装,remove 命令会删除软件包和配置文件,但是不会删除已经在安装期间创建的用户和组。
如果您希望同时删除 Nginx 创建的用户和组,可以使用 purge 命令:

sudo apt purge nginx    # Ubuntu/Debian
sudo yum remove --purge nginx   # CentOS/RHEL

这会完全卸载 Nginx,包括软件包、配置文件以及与之关联的用户和组。请注意,卸载 Nginx 不会删除网站根目录或日志文件等用户生成的数据,需要手动删除这些文件。

根据提示删除成功后再次访问web页面是无法到欢迎页面的

编译卸载

如果通过编译源代码的方式安装了 Nginx,可以按照以下步骤来卸载它:

  1. 进入到之前编译安装 Nginx 的源代码目录,一般是您下载和解压 Nginx 源代码的目录。
  2. 在该目录下运行以下命令,以删除之前安装的 Nginx 程序和文件:
 sudo make uninstall

这将会执行之前编译安装过程中生成的 uninstall 脚本来删除已安装的文件和程序。

3 .手动删除 Nginx 配置文件、网站文件和日志文件等其他可能的残留文件。这些文件的位置和名称取决于您在配置编译选项时所设置的内容。
默认情况下,编译安装的 Nginx 的安装目录为 /usr/local/nginx/,您可以执行以下命令以删除该目录及其内容:

sudo rm -rf /usr/local/nginx/

请注意,执行 make uninstall 命令前,请确保您在之前编译安装 Nginx 源代码时使用了 make install 命令。
通过执行以上步骤,您应该能够从系统中完全卸载编译安装的 Nginx。但请注意,在卸载过程中可能会删除您自定义的配置文件和其他数据文件,因此请谨慎操作,并备份您重要的数据文件。

三.nginx的基本使用

3.1目录结构

进入之前安装的nginx目录
在这里插入图片描述
有三个重要的文件

conf

用来存放配置文件相关,nginx.config 配置功能都是在这里面做,然后调用外部的配置文件
在这里插入图片描述

html

用来存放静态文件的默认目录 html、css等
在这里插入图片描述
一开始进入的欢迎页就是这里的index

sbin

nginx的主程序

其他的重要的
比如logs 存放log日志其中的pid存放线程id
在这里插入图片描述

在这里插入图片描述
用于杀死线程

3.2运行原理

在这里插入图片描述
通过查看线程,nginx启动后启动多个进程,我们发现,master只是用于读取配置文件进行结构化协调,worker进行请求处理工作
在这里插入图片描述

3.3(必须掌握)nginx的配置文件

2023.9.20 停笔 明日课后继续

更多推荐

免费获取独立ChatGPT账户!!

GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域:1、编程建议和示例代码:无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。2、数据可视化:生成各种类型的数据可视化图表,如折线图、柱状图、散点图、饼图、热力图等。提

Spring设计模式,事务管理和代理模式的应用

扩充:贝叶斯定理答案见底。设计模式对关于面向对象问题的具体解决方案.1,单例多例在设计单例模式时,要注意两个点1.构造方法要私有2.成员变量要私有3.创建对象所用的方法要被synchronized修饰.(因为方法体中会涉及到判断当前成员对象是否为空,在饿汉模式下,会有多个线程来访问该方法,为了防止判断访问结果同时为空,

Python 和 Selenium 的浏览器爬虫

Selenium是一款强大的基于浏览器的开源自动化测试工具,最初由JasonHuggins于2004年在ThoughtWorks发起,它提供了一套简单易用的API,模拟浏览器的各种操作,方便各种Web应用的自动化测试。它的取名很有意思,因为当时最流行的一款自动化测试工具叫做QTP,是由Mercury公司开发的商业应用。

Webpack的Tree Shaking是如何工作的以及它的作用

聚沙成塔·每天进步一点点⭐专栏简介⭐什么是TreeShaking?⭐如何工作⭐它的作用⭐示例⭐写在最后⭐专栏简介前端入门之旅:探索Web开发的奇妙世界欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将

kubernetes进阶 (三) 基础练习

前两天朋友给了我几道题,看着挺简单的,但实际做的时候发现坑不少,这里做下笔记一、镜像构建部署lnmp1、构建镜像nginx、php、mysql要求使用centos7作为基础镜像2、使用deployment部署上面的容器,要求3个服务要放到一个pod中(虽然这样是不对的)3、使用ingress将上面部署的服务发布出去,通

(NDK编译)详解使用Android.mk编译的C/C++程序过程

想要在Android设备上运行C/C++程序可执行文件,可采用一个方法就是使用NDK编译,很多时候要比gcc编译更适合,这里我采用的是imx6q开发板上面装载了自己编写的Android6.0.1镜像,在Ubuntu64位系统上采用NDK编译。目录1.准备文件2.编写Android.mk注意完整Android.mk代码3

【Linux】生产消费模型 + 线程池

文章目录📖前言1.生产消费模型2.阻塞队列2.1成员变量:2.2入队(push)和出队(pop):2.3封装与测试运行:2.3-1对代码进一步封装2.3-2分配运算任务2.3-3测试与运行3.循环阻塞队列3.1POSIX信号量:3.1-1sem_init/sem_destroy3.1-2sem_wait3.1-3se

QT中的线程池的介绍和使用

文章目录前言一、线程池概念讲解二、使用线程池的场景三、QThreadPool类四、QT中使用线程池总结前言本篇文章将为大家讲解一下QT中线程池的概念和使用的方法。一、线程池概念讲解线程池是一种常见的并发编程模型,用于管理和复用多个线程来执行任务。它的基本思想是在应用程序启动时创建一组线程,这些线程可以重复使用,以执行一

HTML5 游戏开发实战 | 贪吃蛇

在该游戏中,玩家操纵一条贪吃的蛇在长方形场地里行走,贪吃蛇按玩家所按的方向键折行,蛇头吃到食物(豆)后,分数加10分,蛇身会变长,如果贪吃蛇碰上墙壁或者自身的话,游戏就结束了(当然也可能是减去一条生命)。贪吃蛇游戏的运行界面如上图所示。01、贪吃蛇游戏设计的思路把游戏画面看成40×30的方格。食物(豆)和组成蛇的块均在

HTML5 实现扑克翻牌游戏

扑克翻牌游戏就是桌面24张牌,玩家翻到两张相同扑克牌则消去,如果时间2分钟到了,仍然没有成功则游戏失败。扑克翻牌游戏运行结果如图1。01、程序设计的思路1.Html5倒计时功能Html5倒计时功能可以使用setTimeout()函数或者setInterval()函数来实现。1.使用setTimeout实现倒计时功能se

动态规划-货币问题

动态规划-货币问题题目一arr是货币数组,其中的值都是正数。再给定一个正数aim。每个值都认为是一张货币,即便是值相同的货币也认为每一张都是不同的,返回组成aim的方法数。例如:arr={1,1,1},aim=2,第0个和第1个能组成2,第1个和第2个能组成2,第0个和第2个能组成2,一共3种方法,所以返回3从递归入手

热文推荐