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.confupstream 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 2if [ `ps -C nggx -no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi

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

./startup.sh # 8080, 8081

启动nginx服务

nginx # ip1, ip2

启动keepalived

systemctl start keepalived.service

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

nginx -s stop

再访问依旧可以访问。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重塑视频创作的格局!ComfyUI-Mochi本地部署教程

一、介绍 mochi是近期Genmo公司开源的先进视频生成模型,具有高保真运动和强大的提示遵循性。此模型的发布极大的缩小了闭源和开源视频生成系统之间的差距。 目前,视频生成模型与现实之间存在巨大差距。其中最影响视频生成的两个关键功能也就是运动质量和…

el-table自定义按钮控制扩展expand

需求:自定义按钮实现表格扩展内容的展开和收起,实现如下: 将type“expand”的表格列的宽度设置为width"1",让该操作列不展示出来,然后通过ref动态调用组件的内部方法toggleRowExpansion(row, row.expanded)控…

Ubuntu 22.04 英伟达开发环境 CUDA 12.4 | cuDNN 9.0.0 | TensorRT 10.1 版本安装指南

NVIDIA 驱动安装 前置 笔者近期重整服务器,计划重新安装操作系统并配置新的开发环境。服务器的主要配置如下: Dell PowerEdge R730 Intel Xeon E5-2630v3 x2 64GB ECC DDR4 NVIDIA GeForce RTX 2080 Ti Rev. A Ubuntu 22.04.5 LTS x86_64 (No Desktop…

数据结构-栈、队列和数组

栈 栈的定义 栈是只允许在一端进行插入或删除操作的线性表。首先栈式一种线性表,但限定这种线性表只能在某一端进行插入和删除操作,如图所示。 栈包括: 栈顶(Top)。允许进入插入删除的那一端。 栈底(Butt…

Mysql快速列出来所有列信息

文章目录 需求描述实现思路1、如何查表信息2、如何取字段描述信息3、如何将列信息一行展示4、拼接最终结果 需求描述 如何将MySQL数据库中指定表【tb_order】的所有字段都展示出来,以备注中的中文名为列名。 实现思路 最终展示效果,即拼接出可执行执行…

LLM大模型实践10-聊天机器人

大型语言模型带给我们的激动人心的一种可能性是,我们可以通过它构建定制的聊天机器人 (Chatbot),而且只需很少的工作量。在这一章节的探索中,我们将带你了解如何利用会话形式,与具 有个性化特性&#xff08…

用python实现烟花代码,完整代码拿走不谢

有时候用python实现一些有趣的代码,既有趣,又能提升知识 使用Python实现动态烟花代码 效果如下: 不废话,直接上代码: import pygame from random import randint, uniform, choice import mathvector pygame.math…

【Java项目】基于SpringBoot的【校园交友系统】

【Java项目】基于SpringBoot的【校园交友系统】 技术简介:系统软件架构选择B/S模式、SpringBoot框架、java技术和MySQL数据库等,总体功能模块运用自顶向下的分层思想。 系统简介:系统主要包括管理员和用户。 (a) 管理员的功能主要有首页、个人…

使用强化学习训练神经网络玩俄罗斯方块

一、说明 在 2024 年暑假假期期间,Tim学习并应用了Q-Learning (一种强化学习形式)来训练神经网络玩简化版的俄罗斯方块游戏。在本文中,我将详细介绍我是如何做到这一点的。我希望这对任何有兴趣将强化学习应用于新领域的人有所帮助…

大湾区经济网与澳门红刊杂志社签署战略合作

大湾区经济网澳门1月9日电(王强)2025年1月9日,在粤港澳大湾区建设稳步推进的时代背景下,大湾区经济网与澳门红刊杂志社成功签署了合作协议,标志着双方在媒体战略合作领域迈出了坚实的一步,将共同为粤港澳大…

力扣 二叉树的最大深度

树的遍历,dfs与bfs基础。 题目 注意这种题要看根节点的深度是0还是1。 深度优先遍历dfs,通过递归分别计算左子树和右子树的深度,然后返回左右子树深度的最大值再加上 1。递归会一直向下遍历树,直到达到叶子节点或空节点。在回溯…

Chapter 4.6:Coding the GPT model

4 Implementing a GPT model from Scratch To Generate Text 4.6 Coding the GPT model 本章从宏观视角介绍了 DummyGPTModel,使用占位符表示其构建模块,随后用真实的 TransformerBlock 和 LayerNorm 类替换占位符,组装出完整的 1.24 亿参数…

IDEA的Git界面(ALT+9)log选项不显示问题小记

IDEA的Git界面ALT9 log选项不显示问题 当前问题idea中log界面什么都不显示其他选项界面正常通过命令查询git日志正常 预期效果解决办法1. 检查 IDEA 的 Git 设置2. 刷新 Git Log (什么都没有大概率是刷新不了)3. 检查分支和日志是否存在4. 清理 IDEA 缓存 (我用这个成功解决)✅…

埃安UT正式入局纯电小车之争,海豚能否守擂成功

文/王俣祺 导语:2025年刚刚来临,第一波车市竞争就开打了,早在去年广州车展就吸睛无数的埃安 UT ,日前正式开启预售,被称为比亚迪海豚的“最强对手”,主要是其价格和配置也确实全面对标了 比亚迪海豚。那么&…

java中的日期处理:只显示日期,不显示时间的两种处理方式

需要记录某个操作的操作时间,数据库中该字段为DATE类型; 插入数据的时候,使用数据库函数NOW()获取当前日期并插入: <insert id="batchInsertOrgTestersByProjectId">insert into project_org_testers(project_unid, org_tester_id,franchise_date) value…

Nginx代理同域名前后端分离项目的完整步骤

前后端分离项目&#xff0c;前后端共用一个域名。通过域名后的 url 前缀来区别前后端项目。 以 vue php 项目为例。直接上 server 模块的 nginx 配置。 server{ listen 80; #listen [::]:80 default_server ipv6onlyon; server_name demo.com;#二配置项目域名 index index.ht…

【大数据基础】大数据概述

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈大数据技术原理与应用 ⌋ ⌋ ⌋专栏系统介绍大数据的相关知识&#xff0c;分为大数据基础篇、大数据存储与管理篇、大数据处理与分析篇、大数据应用篇。内容包含大数据概述、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数…

解决Qt打印中文字符出现乱码

在 Windows 平台上&#xff0c;默认的控制台编码可能不是 UTF-8&#xff0c;这可能会导致中文字符的显示问题。 下面是在 Qt 应用程序中设置中文字体&#xff0c;并确保控制台输出为 UTF-8 编码&#xff1a; 1. Qt 应用程序代码 在 Qt 中&#xff0c;我们可以使用 QApplic…

测试用例颗粒度说明

当我们在编写测试用例时&#xff0c;总是会遇到一个问题&#xff1a;如何确定测试用例的颗粒度&#xff1f;测试用例过于粗糙&#xff0c;可能无法全面覆盖系统的细节&#xff1b;而颗粒度过细&#xff0c;又会导致测试重复、冗余。掌握合适的颗粒度&#xff0c;不仅可以提高测…

【大模型(LLM)面试全解】深度解析 Layer Normalization 的原理、变体及实际应用

系列文章目录 大模型&#xff08;LLMs&#xff09;基础面 01-大模型&#xff08;LLM&#xff09;面试全解&#xff1a;主流架构、训练目标、涌现能力全面解析 02-【大模型&#xff08;LLM&#xff09;面试全解】深度解析 Layer Normalization 的原理、变体及实际应用 大模型&…