Nginx入门笔记

Nginx入门笔记

  • 一、Nginx基本概念
  • 二、代理
    • 1、正向代理
    • 2、反向代理
  • 三、准备工作
    • 1、CentOS 7安装nginx
      • (1). 安装必要的依赖
      • (2)下载nginx
      • (3)编译安装
      • (4)编译并安装 Nginx
      • (5)启动nginx
    • 2、安装tomcat
  • 四、反向代理与负载均衡
  • 五、动静分离
  • 六、高可用
      • (1)准备

一、Nginx基本概念

什么是NGINX:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 [13],同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。
        Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,有报告表明能支持50000个并发数,事实上nginx的并发能力在同类型的网页服务器中表现较好。
具体介绍可以自行查阅。

二、代理

1、正向代理

在这里插入图片描述
直接访问Google网站显而是不能访问通,我们需要一个能访问同的代理服务器,做过度。不能理解的话,我们可以换个直白的说法。
比如说你去租房租,你想直接找房东区租,但是呢,我又不知道房东的联系方式,这个时候,我们就需要找房产中介,他知道啊,然后就可以顺利的租到房子。(我的理解是:我想租房租,但是没有房屋主人的联系信息,找中介租到手,我知道我租的房子是谁的)。

2、反向代理

在这里插入图片描述
用户访问到一个网址,然后服务器将其转发给所访问的服务器。
我是这样理解:还是租房子,我找一个二房东租房,虽然我也能租到房子,但是我始终不知道这个房子是谁的(这比喻虽然有些不合理)。

三、准备工作

1、CentOS 7安装nginx

(1). 安装必要的依赖

首先,需要安装编译 Nginx 需要的依赖。打开终端并运行以下命令来安装这些依赖:

sudo yum install -y gcc-c++ make zlib-devel pcre-devel openssl-devel

gcc-c++ 和 make 是编译工具。
zlib-devel、pcre-devel 和 openssl-devel 是 Nginx 处理 HTTP 请求所需的库的开发包。
注:要是提示

Cannot find a valid baseurl for repo: base/7/x86_64

Yum是CentOS系统中用于安装、更新和删除软件包的重要工具。然而,由于CentOS 7官方支持已于2024年结束,许多依赖的仓库和镜像源也随之停止更新,导致Yum命令频繁出现错误,如“Could not resolve host: mirrorlist.centos.org”或“Unknown error”。

阿里云提供了稳定的CentOS镜像源,可以通过修改CentOS-Base.repo文件来使用阿里云源。简便的方法就是:

cd /etc/yum.repos.d/
curl -o CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all
sudo yum makecache

然后先 yum update 一下,在执行上方的安装操作。

(2)下载nginx

mkdir /opt/nginx
cd /opt/nginx
wget http://nginx.org/download/nginx-1.26.2.tar.gz
tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2

(3)编译安装

在编译前,你可以使用 ./configure 脚本来定义安装选项,比如安装路径、启用的模块等。

./configure --prefix=/usr/local/nginx --with-http_ssl_module

这个命令将 Nginx 安装到 /usr/local/nginx 目录,并且启用了 HTTPS 支持。根据你的需求,你可能需要添加或删除 ./configure 脚本的选项。

(4)编译并安装 Nginx

make
make install

(5)启动nginx

./usr/local/nginx/sbin/nginx

查看启动状态
在这里插入图片描述

在这里插入图片描述
要是没能访问通,应该是没开放端口:
查看防火墙端口:

# 查看端口
firewall-cmd --list-ports
# 开放端口,这里建议开放80,8080,8081,9001等端口,接下来用得到
firewall-cmd --zone=public --add-port=80/tcp --permanent 
# 重启防火墙
firewall-cmd --reload

我们将它配置成全启动操作:

ln -s /opt/nginx/nginx-1.26.2/sbin/nginx /usr/local/bin/

2、安装tomcat

可以查看该文章:jdk和tomcat安装教程

四、反向代理与负载均衡

启动tomcat服务器,这里我把tomcat服务器配置了两个一个8080端口,一个8081端口
在这里插入图片描述
配置nginx.conf

cd /usr/local/nginx/conf/nginx.conf

upstream myserver {
# 还可以为其添加权重,这样就是用到了负载均衡,不加的话就是均分
        server localhost:8080 weight=5;
        server localhost:8081 weight=2;
}

# 在http添加
server {
        listen 9001;
        server_name localhost;
        charset utf-8;
		# 示例一
        location ~ /nginx/ {
                proxy_pass http://localhost:8080;
        }
		# 示例二
		location / {
#               proxy_pass http://myserver;
        }
}

这里直接访问9001,就被反向到了各自的服务
在这里插入图片描述

五、动静分离

将静态资源放在一个服务器直接访问。

六、高可用

其中一台nginx服务器挂了另一个立刻接手。
在这里插入图片描述

(1)准备

两台服务器,分别安装nginx,keepalived
nginx前边已经安装过,不多说,安装keepalived

yum install keepalived -y

两台都安装上
修改keepalived配置文件:
在这里插入图片描述

vi keepalived.conf

在这里插入图片描述
第一个框先不说,第二个

字段说明
stateBACKUPBACKUP:从服务,MASTER:主服务
interfaceens33自己的网络,可以使用Ip addr查看
virtual_router_id51两个服务配置一至
priority90权值,主服务高一些,从服务低一些
virtual_ipaddress虚拟ip访问的IP两个服务配置一样(注意一点,我的当时直接写了一个导致无法方通,后来改了一个和我的服务器IP顺序的通行了)

第一个框中我们需要配置一个script文件:
nginx_check.sh

#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx # nginx安装路径
        sleep 2
        if [ `ps -C nggx -no-header |wc -l` -eq 0 ];then
                killall keepalived
        fi
fi

做好这些就可以启动服务了
启动两个tomcat服务:

./startup.sh # 8080, 8081

启动nginx服务

nginx # ip1, ip2

启动keepalived

systemctl start keepalived.service

然后就可以直接使用虚拟ip访问了:
在这里插入图片描述
接下来我模拟主服务挂机了

nginx -s stop

再访问依旧可以访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/950904.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

优化提示词改善答疑机器人回答质量

1.通过优化提示词来调整大模型的回答 1.1使用场景 默认提示词无法满足业务要求。 回答的内容太简单/困难,输出内容/格式/语气达不到要求等 1.2llama-index 的提示词模版 1.2.1llama-index 的默认模板 from llama_index.llms.dashscope import DashScope from lla…

HTML5 手风琴(Accordion)详解

HTML5 手风琴(Accordion)详解 手风琴(Accordion)是一种常用的用户界面控件,允许用户通过点击标题来展开或收起内容,适合用于显示大量信息而不占用太多空间。以下是手风琴的详细介绍及实现示例。 1. 手风…

maven如何从外部导包

1.找到你项目的文件位置,将外部要导入的包复制粘贴进你当前要导入的项目下。 2.从你的项目目录下选中要导入的包的pom文件即可导包成功 注意一定是选中对应的pom文件 导入成功之后对应的pom.xml文件就会被点亮

Eclipse配置Tomcat服务器(最全图文详解)

前言: 本章使用图文讲解如何在Eclipse开发工具中配置Tomcat服务器、如何创建和启动JavaWeb工程,欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 目标: 一、配置Tomcat服务器 1. 切换Eclipse视图 2. 打开菜单 3. 找到服务选项 4. 选择…

汽车供应链关键节点:物流采购成本管理全解析

在汽车行业,供应链管理是一项至关重要的任务。汽车制造从零部件的生产到整车的交付,涉及多个环节,其中物流、采购与成本管理是核心节点。本文将深入分析这些关键环节,探讨如何通过供应商管理系统及相关工具优化供应链管理。 一、…

软件工程期末整理(二)

快速原型开发模型是(适用于客户需求难以清楚定义、规模较小的系统)。(编写系统实施计划)不是系统设计阶段的主要活动 解释:系统实施计划”更侧重于后续的实施与部署阶段,属于项目管理层面的内容 协作性不属于构件的特性在类图中…

STM32-笔记35-DMA(直接存储器访问)

一、什么叫DMA? DMA(Direct Memory Access,直接存储器访问)提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于…

代码管理助手-Git

前言 Git 是一个版本控制系统,可以帮助你记录文件的每一次修改。这样,如果你在编程时不小心把代码写错了,可以很容易地回退到之前的版本。最重要的是,Git 是完全免费的,用户可以在自己的计算机上安装和使用 Git&#x…

蓝耘:GPU算力云服务的技术探索与AIGC应用支持

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 一、蓝耘的核心优势 1. 行业领先的基础设施 …

Kubernetes Gateway API-4-TCPRoute和GRPCRoute

1 TCPRoute 目前 TCP routing 还处于实验阶段。 Gateway API 被设计为与多个协议一起工作,TCPRoute 就是这样一个允许管理TCP流量的路由。 在这个例子中,我们有一个 Gateway 资源和两个 TCPRoute 资源,它们按照以下规则分配流量&#xff1…

在不到 5 分钟的时间内将威胁情报 PDF 添加为 AI 助手的自定义知识

作者:来自 Elastic jamesspi 安全运营团队通常会维护威胁情报报告的存储库,这些报告包含由报告提供商生成的大量知识。然而,挑战在于,这些报告的内容通常以 PDF 格式存在,使得在处理安全事件或调查时难以检索和引用相关…

Unity学习之UGUI进阶

一、事件监听接口 1、作用 用于实现类型长按、双击、拖拽等基础控件无法实现的功能 所有控件都能够添加更多的事件监听来处理对应的逻辑 2、事件监听接口类型 (1)常用事件接口 (2)不常用事件接口 3、使用事件监听接口 &#…

Redis为 List/Set/Hash 的元素设置单独的过期时间

一.业务简介 我们知道,Redis 里面暂时没有接口给 List、Set 或者 Hash 的 field 单独设置过期时间,只能给整个列表、集合或者 Hash 设置过期时间。 这样,当 List/Set/Hash 过期时,里面的所有 field 元素就全部过期了。但这样并不…

【Notepad++】Notepad++如何删除包含某个字符串所在的行

Notepad如何删除包含某个字符串所在的行 一,简介二,操作方法三,总结 一,简介 在使用beyoundcompare软件进行对比的时候,常常会出现一些无关紧要的地方,且所在行的内容是变化的,不方便进行比较&…

APP上架之Android 证书 MD5 指纹

Android 证书 MD5 指纹 1. 什么是 Android 证书 MD5 指纹? Android 证书 MD5 指纹是对证书数据进行 MD5 哈希运算后得到的 128 位字符串。在 Android 开发中,每个证书在理论上都有一个唯一的 MD5 指纹,用于识别和验证证书的有效性。证书指纹…

软件安全性测试有哪些测试方法?

随着数字化进程的加速,软件在各个领域扮演着越来越重要的角色。软件的安全性测试作为保证软件质量和安全的重要环节,逐渐成为企业在开发和部署过程中不可或缺的一部分。 一、软件安全性测试的测试方法   1、静态分析法:通过分析源代码或二…

LabVIEW轴承性能测试系统

本文介绍了基于LabVIEW的高效轴承性能测试系统的设计与开发。系统通过双端驱动技术实现高精度同步控制,针对轴承性能进行全面的测试与分析,以提高轴承的可靠性和寿命。 项目背景 随着工业自动化程度的提高,对轴承的性能要求越来越高。传统的…

57. Three.js案例-创建一个带有聚光灯和旋转立方体的3D场景

57. Three.js案例-创建一个带有聚光灯和旋转立方体的3D场景 实现效果 该案例实现了使用Three.js创建一个带有聚光灯和旋转立方体的3D场景。 知识点 WebGLRenderer(WebGL渲染器) THREE.WebGLRenderer 是 Three.js 中用于将场景渲染为 WebGL 内容的核…

如何使用vue引入three.js

在 Vue.js 项目中引入和使用 Three.js 是一个常见的需求,Three.js 是一个用于在浏览器中创建和显示动画 3D 计算机图形的 JavaScript 库。以下是一个基本的示例,展示如何在 Vue 项目中引入和使用 Three.js。 1. 创建 Vue 项目 如果你还没有一个 Vue 项…

9.4 visualStudio 2022 配置 cuda 和 torch (c++)

一、配置torch 1.Libtorch下载 该内容看了【Libtorch 一】libtorchwin10环境配置_vsixtorch-CSDN博客的博客,作为笔记用。我自己搭建后可以正常运行。 下载地址为windows系统下各种LibTorch下载地址_libtorch 百度云-CSDN博客 下载解压后的目录为: 2.vs…