Linux之Nginx

1、Nginx

        1.1、什么是Nginx

        Nginx最初由Igor Sysoev开发,最早在2004年公开发布。它被设计为一个轻量级、高性能的服务器,能够处理大量并发连接而不消耗过多的系统资源。Nginx的架构采用了事件驱动的方式,能够高效地处理请求。它的模块化设计使得用户可以根据需要添加不同的功能,比如SSL支持、URL重写、缓存等。Nginx的高性能和灵活性使得它成为了许多大型网站和应用的首选服务器软件。

        1.2、Nginx优缺点

优点

  • 高并发量:根据官方给出的数据,能够支持高达 50,000 个并发连接数的响应。

  • 内存消耗少:处理静态文件,同样起web 服务,比apache 占用更少的内存及资源,所以它是轻量级的(至于区别在哪?后面内容进行分析)。

  • 简单稳定:一般在使用 Nginx 中,针对单个域名配置文件配置接口,学习成本很低。相比 Apache 配置简单很多。

  • 模块化程度高:Nginx是高度模块化的设计,编写模块相对简单,包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter,支持 SSL 和 TLSSNI。

  • 支持Rwrite重写规则:能够根据域名、URL的不同, 将HTTP请求分发到不同的后端服务器群组。

  • 低成本:Nginx可以做负载均衡,且Nginx是开源免费的,如果使用商业软件F5等硬件来做负载均衡,硬件成本比较高。

  • 支持多系统:Nginx是由C语言开发,适用于各个平台。

缺点

  • 动态处理能力较差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。

  • rewrite弱:虽然Nginx支持rewrite功能,但是相比于Apache来说,Apache比Nginx 的rewrite 强大。Apache 配置 rewrite 是通过项目下面的.htaccess 文件做配置还有就是打开 Apache 配置中的 rewrite 模块。而 Nginx 则需要在做域名配置时,对 rewrite 做配置。

        1.3、Nginx正向代理与反向代理

                1.3.1、正向代理

正向代理:意思是当客服端去访问,或者请求某个地址的时候无法正常访问,其而通过中间服务器去代理客服端的请求去访问对应的网址或者地址,这就是正向代理;正向代理代理的是客户端

                1.3.2、反向代理

反向代理:它代表客户端向后端服务器发送请求,并将后端服务器的响应返回给客户端。与常规代理服务器不同的是,反向代理隐藏了后端服务器的真实地址,使得客户端只能看到反向代理服务器的地址。这种方式可以提高安全性、负载均衡和性能优化。反向代理代理的是服务器

2、Linux安装配置Nginx

        2.1、安装配置Nginx的官方yum源

#配置Nginx的yum源(时间较长请耐心等待)
rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm

        如图

       

        2.2、添加防火墙端口

        2.3、访问效果

3、SPA项目发布

        3.1、创建静态资源目录,并指定nginx的root静态资源

        3.2、访问效果

4、Nginx负载均衡

        4.1、Nginx之反向代理

        上传jdk和tomcat、mysql压缩包到linux中,并解压,操作看Linux之单机项目部署-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/2302_78041486/article/details/139095568?spm=1001.2014.3001.5501        导入数据库脚本,在mysql中

        在tomcat中配置后端项目

后端项目访问

注:关闭Linux中8080端口,用nginx实现反向代理操作如下:

        配置nginx的核心文件,进行反向代理操作

访问时出现如下错误!!!!!

# 切换到nginx的日志目录
cd /var/log/nginx/
# 查看日志信息
tail -f error.log

        解决方案:关闭SeLinux

setsebool -P httpd_can_network_connect 1

        4.2、Nginx之负载均衡

        复制一个tomcat服务器,进行修改server.xml文件内部端口配置即可,操作如图:

        配置nginx内部文件即可

upstream tomcats{server 127.0.0.1:8080 weight=1;server 127.0.0.1:8081 weight=2;
}
server {listen       80;server_name  www.zking.com;#charset koi8-r;#access_log  /var/log/nginx/host.access.log  main;location ^~ /api/ {proxy_pass http://tomcats/;}

启动两台tomcat服务

第一次登录

看响应结果

第二次登录

进行了负载均衡操作,

        4.3、Nginx之负载均衡策略

        轮询法:

将请求轮流分配到注册的后端服务器中,平等的对待所用的后端服务器,不关心服务器的实际连接数就负载情况。比较适合后端服务器的配置都差不多的情况。例如如下配置:

upstream server {server 192.160.0.123:8080;server 192.160.0.124:8080;server 192.160.0.125:8080;
}

        加权轮询:

        可以为每个武器配置一个权重值,权重值越大将会有机会分担更多的请求,该配置方式比价适合集群中各个服务器配置不均衡的情况,对高的服务器可以配置大一些的权重,对配置低的机器可以配置小一些的权重。

upstream server {server 192.160.0.123:8080 weight=4;server 192.160.0.124:8080 weight=2;server 192.160.0.125:8080 weight=1;
}

        原地址哈希:

        根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器的大小进行取模计算,得到的结果作为客户端要访问的服务器的序号。

特点:这种方式可以保证来自同一ip的请求被打的固定机器上,可以解决session问题。

upstream server {ip_hash;server 192.160.0.123:8080 weight=1;server 192.160.0.124:8080 weight=2;server 192.160.0.125:8080 weight=1;
}

        最小连接数法:

        该算法根据后端服务器当前的连接情况,动态的选取其中当前堆积的连接数最少的一台服务器来处理请求,以便于提高服务的利用率。

这种算法比较适合后端各个服务器配置不同的情况。

upstream server {least_conn;server 192.160.0.123:8080 weight=1;server 192.160.0.124:8080 weight=2;server 192.160.0.125:8080 weight=1;
}

        Fair:

        Fair负载均衡比基于权重,和ip_hash算法更加智能,可以根据后端服务器的响应时间来分配请求,响应时间短优先分配。
该算法由第三方提供,需要安装upstream_fair模块。

upstream server {fair;server 192.160.0.123:8080 weight=1;server 192.160.0.124:8080 weight=2;server 192.160.0.125:8080 weight=1;
}

        url_hash:

与ip_hash比较接近,该算法根据url的哈希结果来分配请求,使每个url定向到一台后端服务器上。

该算法为第三方提供,使用时需要先安装Nginx的hash软件包

upstream server {hash $request_uri;server 192.160.0.123:8080 weight=1;server 192.160.0.124:8080 weight=2;server 192.160.0.125:8080 weight=1;
}

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

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

相关文章

python-情报加密副本

【问题描述】某情报机构采用公用电话传递数据,数据是5位的整数,在传递过程中是加密的。加密规则如下:每位数字都加上8,然后用和除以7的余数代替该数字,再将第1位和第5位交换,第2位和第4位交换。请编写程序,…

Denoising Diffusion Probabilistic Models 全过程概述 + 论文总结

标题:Denoising(🌟去噪)Diffusion Probabilistic Models(扩散概率模型) 论文(NeurIPS会议 CCF A 类):Denoising Diffusion Probabilistic Models 源码:hojona…

卡特兰数-

是组合数学中一种常出现于各种计数问题中的数列。 一、简单介绍 卡特兰数是一个数列,其前几项为(从第零项开始) : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 47763…

澳大利亚.德国-新闻媒体投放通稿:发表新闻稿需要留意哪些地方-大舍传媒

概述 当我们想要发布新闻稿时,了解目标媒体的特点和要求是至关重要的。本文将介绍澳大利亚和德国的新闻媒体,以及在撰写和投放新闻稿时需要注意的要点,以帮助您更好地与目标受众沟通。 澳大利亚媒体 澳大利亚是一个多元化的国家&#xff0…

Android ListView鼠标模式下ListView回滚问题

概述 在 Android 应用程序中,ListView 是一种常用的控件,用于显示可滚动列表数据。然而,当在鼠标操作模式下使用 ListView 时,可能会遇到一个问题:点击列表项时,列表会回滚到指定位置,这可能会导…

【ML Olympiad】预测地震破坏——根据建筑物位置和施工情况预测地震对建筑物造成的破坏程度

文章目录 Overview 概述Goal 目标Evaluation 评估标准 Dataset Description 数据集说明Dataset Source 数据集来源Dataset Fields 数据集字段 Data Analysis and Visualization 数据分析与可视化Correlation 相关性Hierarchial Clustering 分层聚类Adversarial Validation 对抗…

OFDM通信中的部分内容

纠错编码:在无线通信过程中由于传输过程存在噪声等各种非理想因素,在接收端接收到的信息往往相对于发射信息存在误码,通过纠错编码方式可以对少数非连续的误码进行判断和纠正。举个简单的例子,发射端可能发射的信息为00,01,10,11,…

二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列 背景题目描述题解 背景 每次重复刷到这题都没有思路,看答案也总需要理解一会,但是下次又忘了,哈哈哈,因此记录一下思路. 题目描述 牛客地址: https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd 描述 输入一个整数数…

网络应用层之(1)DHCPv6协议

网络应用层之(1)DHCPv6协议 Author: Once Day Date: 2024年5月26日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-C…

如何从头搭建一个自己的java库并上传到maven官方仓库

创建代码 在代码库根目录执行maven命令,用于快速生成一个基础的Maven项目 mvn archetype:generate \-DgroupIdcom.mycompany \-DartifactIdmy-maven-project \-Dversion1.0.0 \-DarchetypeArtifactIdmaven-archetype-quickstart \-DinteractiveModefalse 这个命令…

分享一个用AI降本的思路,不懂代码也能上手

如何用AI解决实际的业务问题? 生财圈友我来利用ChatGPT做算法建模,每年为公司省下6万元。 今天他将分享通过ChatGPT进行数据分析的思路,从最开始定义问题到最终数据论证。 上手的实操过程门槛并不高,但可以实现把官方电商平台的…

c++ 虚函数常见问题

1 虚函数,虚表基础 虚函数,虚表基础 2 虚函数表保存在哪里 ? 虚函数表在编译的时候确定。在 linux 下,保存在只读数据段的重定位段,这个段的名字是 .data.rel.ro。 如下代码,编译之后,使用 readelf -t a…

仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码

码名称:仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码 开发环境:帝国cms7.5 空间支持:phpmysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码自动采集 - 我爱模板网源码名称:仿《Q极速体育》NBACBA体育直…

网络攻防概述(基础概念)

文章目录 APTAPT概念APT攻击过程 网络空间与网络空间安全网络空间(Cyberspace)网络空间安全(Cyberspace Security) 网络安全属性机密性(Confidentiality或Security)完整性(Integrity)可用性(Availability)不可否认性(Non-repudiation&#xf…

如何学习计算机网络(超详细,方法论)

分享一下学习计算机网络的方法论 首先是看视频: 这里我推荐中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版》课程 课程目标_哔哩哔哩_bilibili 教材采用神书《计算机网络(自顶向下方法)》,授课风格更偏向实…

企业如何正确地利用LLM大模型?

大型语言模型 (LLM) 不值得信任。就是这样。 考虑到它们先进的 AI 能力以及当今强大的基础模型的普遍知识,这似乎是一件令人惊讶的事情。然而,问题的关键在于 LLM 无法解释其输出。你不能信任 LLM 的结果,不是因为它不准确,而是因…

无畏并发: Rust Mutex的基本使用

并发是很多编程语言避不开的一块主要内容,主打一个无畏并发的Rust自然也面临这样的挑战。Rust中的Mutex提供了强大的同步原语,确保共享数据的线程安全,这篇文章中,我们会探讨Mutex的使用,从基础的用法到一些高阶内容。…

2024电工杯B题平衡膳食食谱的优化设计及评价原创论文分享

大家好,从昨天肝到现在,终于完成了2024电工杯数学建模B题的完整论文啦。 实在精力有限,具体的讲解大家可以去讲解视频: 给大家看一下目录吧: 目录 摘 要: 10 一、问题重述 14 二.问题分析 …

Python学习---基于HTTP的服务端基础框架搭建案例

整体功能: 1 创建框架构建相关的文件夹 2 创建app,模块文件 3 在 app模块文件中创建application函数(用于处理请求) 4 将request_handler()中的处理逻辑交由app模块的application函数完成 5 app模块的 application函数返回响应报文 6 在application 文件夹中创建一个…

淘工厂订单导出自动化工具

目录 下载安装与运行 主要目的 其他工具的弊端 本工具的优势 视频演示 下载新版后的注意事项 支持的导出项 什么叫一单多拍 常见问题 如何实现快捷登录 导出卡住时如何操作 如何精确导出 下载安装与运行 下载、安装与运行 语雀 主要目的 导出订单信息&#xf…