Nginx入门到搭建

news2024/12/24 21:10:00

前言

        上一篇文章我们分享了Linux的软件安装以及项目后端的部署,本篇文章将要分享的内容是,Nginx的入门安装、反向代理、负载均衡等。


一、Nginx简介

        Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)
代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实
上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站
用户有:百度、京东、新浪、网易、腾讯、淘宝等。

特点

更快:单次请求响应更快,高并发可以更快的处理响应

高拓展性:设计极具扩展性,由多个不同功能、不同层次、不同类型且耦合度极低的模块组成

高可靠性:很多高流量网站都在核心服务器上大规模使用 Nginx

低内存消耗:一般1万个非活跃的 HTTP Keep-Alive 连接在 Nginx 中仅消耗2.5MB内存

高并发:单机支持10万以上的并发连接

热部署:master 管理进程与 worker工作进程的分离设计,使得 Nginx 能够支持热部署

开源协议:使用 BSD 许可协议,免费使用,且可修改源码
 

 二、反向代理

在介绍反向代理之前先讲一下什么是正向代理

正向代理指的是,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端

把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理

上图:

 讲完正向代理,现在该分享一下反向代理。

反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP地址。

上图:

 这样我们访问百度是用www.baidu.com,而不是他的真实服务器的ip

讲了反向代理,那么为什么要用反向代理呢?

1、可以起到保护网站安全的作用,因为任何来自Internet的请求都必须先经过代理服务器。

隐藏了真实的ip地址。

2、通过缓存静态资源,加速Web请求

3、实现负载均衡

三、负载均衡

 目前市面上,主流的负载均衡方案,硬件设备有F5,软件方案有四层负载均衡的LVS,七层负载均衡的Nginx、Haproxy等

本文分享的内容是使用Nginx做负载均衡。

那么什么是负载均衡呢?

负载均衡是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快。

打个比方,某电商平台淘X,在双十一期间用户访问量很大,一个服务器肯定是不够的,而且承担的压力蛮大。通过负载均衡我们将所有的请求分摊在配置好的服务器中,根据服务器的性能,我们可以通过设置权重来分配各个服务器的分摊量。这样能更好的提升客户的使用体验。

就算一个服务器崩了,还有其他服务器在使用,不会导致整个软件无法使用。

四、案例

        讲完理论咱们实践一手,用Nginx搭建前端项目并且实现负载均衡。

        1、安装Nginx 

         1.1、添加 nginx 官方提供的 yum 源 

rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm

  

使用yum安装Nginx

 yum install nginx

        1.2、启动以及设置开机启动

systemctl start nginx.service
 systemctl enable nginx.service

        1.3、设置防火墙开放80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --reload && firewall-cmd --list-port

        1.4、测试是否可用 

 能到这个界面就是安装成功且可用了。

        2、Tomcat负载均衡

这里做负载均衡需要多个服务器,我们直接复制一份解压好的,过程就不展示了

然后我们将复制的Tomcat的配置修改一下 

        1. HTTP端口,默认8080,改为8081
        2.远程停服务端口,默认8005,改为8006
        3.AJP端口,默认8009,改为8010

防火墙开放8081端口

firewall-cmd --zone=public --add-port=8081/tcp --permanent

firewall-cmd --reload && firewall-cmd --list-port

启动服务,测试访问

上面的步骤弄完,现在可以开始Nginx的配置了。

找到nginx.conf文件,进行配置

upstream  tomcat_list {  #服务器集群名字
    server    127.0.0.1:8080  weight=1;   #服务器1   weight是权重的意思,权重越大,分配的概率越大。
    server    127.0.0.1:8081  weight=1; #服务器2   weight是权重的意思,权重越大,分配的概率越大

在default.conf中添加

location / {
      #root   /usr/share/nginx/html;
      #proxy_pass   http://172.17.0.3:8080;
      proxy_pass   http://tomcat_list;
      index index.html index.htm;
  }

重启Nginx服务让配置生效

systemctl restart nginx

测试是否生效

 

  最终的结果就是,Nginx访问一个网址,是由两个tomcat共同承担压力;

        3、前端项目部署

          我们是希望能用www.zhw.com就能访问我们的项目

我们现在试着访问www.baidu.com

 可以看到访问的不是百度,而是我们的项目。

因为这是我们直接编码的服务地址,会优先执行我们本机的地址,如果本机没有,它将会执行公网的。公网就是我们日常进入的网站,而这个hosts是我们本机的。   

          3.1、本地测试

将前端项目打包,生成dist文件夹,点击index.html访问项目测试
npm run build

       

         3.2、C:\Windows\System32\drivers\etc\hosts中增加映射关系

        

        3.3、default.conf配置

        3.4、重启测试


总结

        本文分享了Nginx的负载均衡、反向代理以及前端项目的部署,在实际项目中的应用需要靠自己完成。本次分享就到此为止,本人技术有限,如有错误还望指正,谢谢啦。

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

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

相关文章

如何让彩色网页变灰

如何让彩色网页变灰 在特殊的日子&#xff08;如清明节特殊纪念日等&#xff09;&#xff0c;需要让彩色网页变成灰色&#xff08;黑白色&#xff09;如下图所示&#xff0c;怎么做到呢&#xff1f; 下面先给出彩色正常的网页示例源码&#xff1a; <!DOCTYPE html> <…

消除数据库表中的重复组

重复组是在整个数据库表中重复的一系列字段/属性。大型和小型组织都面临着一个普遍的问题&#xff0c;这个问题可能会带来多种后果。例如&#xff0c;在不同区域中存在的同一组信息会导致数据冗余和数据不一致。而且&#xff0c;所有这些重复的数据可能会占用大量宝贵的磁盘空间…

【计算机图形学入门】笔记2:向量与线性代数(图形学中用到的线性代数)

02向量与线性代数&#xff08;图形学中用到的线性代数&#xff09;1.A Swift and Brutal Introduction to Linear Algebra!简单粗暴入门线性代数1.Graphics’ Dependencies 图形学依赖的一些知识2.Vectors 向量1.Dot product向量的点乘2.向量的叉乘Cross product3.矩阵Matrix4.…

Linux——进程并发控制(系统中的POSIX信息量机制、进程间通信)

目录 一、Linux系统中POSIX信号量机制 1、POSIX有名信号量 &#xff08;1&#xff09;常用函数 &#xff08;2&#xff09;有名信号量应用于多线程的例子 &#xff08;3&#xff09;有名信号量应用于多进程 2、POSIX无名信号量 &#xff08;1&#xff09;常用函数 &…

基于jsp+mysql+ssm大学生社交平台-计算机毕业设计

项目介绍 本系统需要满足校园网上社交方面的基本需要。需要实现用户所要求的功能&#xff0c;方便他们进行交流。在界面上力求做到美观、操作方面尽量避免由于会员操作不当带来系统的出错现象。对数据库操作的性能需要做到优化&#xff0c;数据库过大将会影响运行速度。编程过…

(四) Docker镜像

Docker镜像一、概述二、镜像加载原理三、镜像注意点四、Docker镜像commit操作五、总结一、概述 书面解释 是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时…

开关电源环路稳定性分析(04)-电压控制模式

大家好&#xff0c;这里是大话硬件。 在前3节分析了一个开环电源是如何工作的&#xff0c;开环电源的弊端也很明显&#xff0c;无法维持输出的稳定&#xff0c;不能抗扰动&#xff0c;无法得到我们想要的电压等等。因此&#xff0c;开关电源的闭环环路对稳定性来说非常重要。 …

LeetCode简单题之统计共同度过的日子数

题目 Alice 和 Bob 计划分别去罗马开会。 给你四个字符串 arriveAlice &#xff0c;leaveAlice &#xff0c;arriveBob 和 leaveBob 。Alice 会在日期 arriveAlice 到 leaveAlice 之间在城市里&#xff08;日期为闭区间&#xff09;&#xff0c;而 Bob 在日期 arriveBob 到 l…

大数据:Storm和流处理简介

一、Storm 1.1 简介 Storm 是一个开源的分布式实时计算框架&#xff0c;可以以简单、可靠的方式进行大数据流的处理。通常用于实时分析&#xff0c;在线机器学习、持续计算、分布式 RPC、ETL 等场景。Storm 具有以下特点&#xff1a; 支持水平横向扩展&#xff1b;具有高容错…

信息安全技术 信息安全风险评估方法 汇总

概述 风险评估应贯穿于评估对象生命周期 各阶段中。评估对象生命周期各阶段中涉及的风险评估原则和方法昆一致的&#xff0c;但由干各阶段实施内容对象、安全需求不同.使得风险评估的对象、目的、要求等各方面也有所不同。在规划设计阶段&#xff0c;通过风险评估以确定评估对…

(推荐阅读)H264, H265硬件编解码基础及码流分析

需求 在移动端做音视频开发不同于基本的UI业务逻辑工作,音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,vps,start code以及基本的工作原理,而大多同学都只是一知半解,所以导致代码中的…

JAVA-元注解和注解

故事背景&#xff1a;罗芭是一名正在学习java的妹子&#xff0c;最近看甲骨文的官方文档&#xff0c;学到了注解Annotation这里&#xff0c;发现注解我可以自定义&#xff0c;但罗芭不会诶。但是布洛特 亨德尔已经学习过了java注解。 罗芭&#xff0c;help me~ 唰唰唰&#xff…

Redis05:Redis高级部分

Redis高级部分SpringBoot整合Redis整合测试序列化配置解决乱码问题redis自定义RedisTemplateSpringBoot整合Redis 说明&#xff1a;在SpringBoot2.x之后&#xff0c;原来使用jedis被替换成了letttuce! jedis:采用的时直连&#xff0c;多个线程操作的话&#xff0c;是不安全的&a…

MySQL下载和安装(Windows)

前言&#xff1a;刚换了一台电脑&#xff0c;里面所有东西都需要重新配置&#xff0c;习惯了所有东西都配好的装配&#xff0c;突然需要自己从头来配才发现不知道如何下手&#xff0c;所以决定将这些步骤都做个记录&#xff0c;以便后续查看。仅限没有安装过的人使用&#xff0…

关于海量级存储用户标签体系架构

项目场景&#xff1a; 对于我们运营来说&#xff0c;需要给用户打上不同的身份标签。比如用户是否偏重&#xff0c;身高范围&#xff0c;是不是我们的会员。。。等等一些标签。 比如我们有100W用户。我们需要来给100W用户打上接近200个不同身份的标签应该如何去做&#xff1f…

【数据集NO.4】遥感图像数据集汇总

文章目录前言一、NWPU VHR-10卫星图像数据集二、RSOD三、DIOR四、DOTA五、HRSC2016六、UCAS AOD七、HRRSD八、SSDD九、DLR 3K Vehicle前言 数据集对应应用场景&#xff0c;不同的应用场景有不同的检测难点以及对应改进方法&#xff0c;本系列整理汇总领域内的数据集&#xff0…

《MySQL实战45讲》——学习笔记20 “幻读、全表扫描的加锁方式、间隙锁、next-key lock“

本篇介绍MySQL在可重复度RR隔离级别下&#xff0c;引入的一种锁机制&#xff1a;间隙锁 (Gap Lock)&#xff1b;间隙锁与事务相关的表锁、行锁不同&#xff0c;它锁的是“往这个间隙中插入一个记录”这个操作&#xff0c;除此之外间隙锁之间都不存在冲突关系&#xff08;因而有…

Spring @Autowire注解源码详解

目录 一&#xff1a;触发方式&#xff1a; 二&#xff1a;源码解析 2.1 扫描注入点 2.2 属性赋值 一&#xff1a;触发方式&#xff1a; 1.Spring容器在每个Bean实例化之后&#xff0c;调用AutowireAnnotationBeanPostProcessor的postProcessMergedBeanDefinition方法进行扫…

[附源码]计算机毕业设计美发店会员管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

七周成为数据分析师 | 数据可视化

一.常见的初级图表 维度&#xff1a;描述分析的角度和属性&#xff0c;分类数据&#xff08;时间&#xff0c;地理位置&#xff0c;产品类型等&#xff09; 度量&#xff1a;具体的参考数值&#xff0c;数值数据&#xff08;元&#xff0c;销量&#xff0c;销售金额等&#x…