首页 > 系统相关 >Nginx 一网打尽

Nginx 一网打尽

时间:2023-02-15 22:56:31浏览次数:53  
标签:nginx -- Nginx conf 一网打尽 root localhost



早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。

从上面的描述中,主要存在两个问题:①单体结构的部署方式无法承载日益增长的业务流量。②当后端节点宕机后,整个系统会陷入瘫痪,导致整个项目不可用。

因此在这种背景下,引入负载均衡技术可带来的收益:

  • 「系统的高可用:」 当某个节点宕机后可以迅速将流量转移至其他节点。
  • 「系统的高性能:」 多台服务器共同对外提供服务,为整个系统提供了更高规模的吞吐。
  • 「系统的拓展性:」 当业务再次出现增长或萎靡时,可再加入/减少节点,灵活伸缩。

OK~,既然引入负载均衡技术可给我们带来如此巨大的好处,那么又有那些方案可供选择呢?主要有两种负载方案,「「硬件层面与软件层面」」 ,比较常用的硬件负载器有A10、F5等,但这些机器动辄大几万乃至几十万的成本,因此一般大型企业会采用该方案,如银行、国企、央企等。而成本有限,但依旧想做负载均衡的项目,那么可在软件层面实现,如典型的Nginx等,软件层的负载也是本文的重点,毕竟Boss们的准则之一就是:「「能靠技术实现的就尽量不花钱。」」


当然,如果你认为本文对你而言有帮助,记得点赞、收藏、关注三连噢!

一、性能怪兽-Nginx概念深入浅出

Nginx是目前负载均衡技术中的主流方案,几乎绝大部分项目都会使用它,Nginx是一个轻量级的高性能HTTP反向代理服务器,同时它也是一个通用类型的代理服务器,支持绝大部分协议,如TCP、UDP、SMTP、HTTPS等。

图片


Nginx与Redis相同,都是基于多路复用模型构建出的产物,因此它与Redis同样具备 「「资源占用少、并发支持高」」 的特点,在理论上单节点的Nginx同时支持5W并发连接,而实际生产环境中,硬件基础到位再结合简单调优后确实能达到该数值。

先来看看Nginx引入前后,客户端请求处理流程的对比:

图片

原本客户端是直接请求目标服务器,由目标服务器直接完成请求处理工作,但加入Nginx后,所有的请求会先经过Nginx,再由其进行分发到具体的服务器处理,处理完成后再返回Nginx,最后由Nginx将最终的响应结果返回给客户端。

了解了Nginx的基本概念后,再来快速搭建一下环境,以及了解一些Nginx的高级特性,如动静分离、资源压缩、缓存配置、IP黑名单、高可用保障等。


二、Nginx环境搭建

首先创建Nginx的目录并进入:

[root@localhost]# mkdir /soft && mkdir /soft/nginx/
[root@localhost]# cd /soft/nginx/

下载Nginx的安装包,可以通过FTP工具上传离线环境包,也可通过wget命令在线获取安装包:

[root@localhost]# wget https://nginx.org/download/nginx-1.21.6.tar.gz  

   没有wget命令的可通过yum命令安装:

[root@localhost]# yum -y install wget

解压Nginx的压缩包:

[root@localhost]# tar -xvzf nginx-1.21.6.tar.gz

下载并安装Nginx所需的依赖库和包:

[root@localhost]# yum install --downloadonly --downloaddir=/soft/nginx/ gcc-c++
[root@localhost]# yum install --downloadonly --downloaddir=/soft/nginx/ pcre pcre-devel4
[root@localhost]# yum install --downloadonly --downloaddir=/soft/nginx/ zlib zlib-devel
[root@localhost]# yum install --downloadonly --downloaddir=/soft/nginx/ openssl openssl-devel

也可以通过yum命令一键下载(推荐上面哪种方式):

[root@localhost]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

执行完成后,然后ls查看目录文件,会看一大堆依赖:

图片

紧接着通过rpm命令依次将依赖包一个个构建,或者通过如下指令一键安装所有依赖包:

[root@localhost]# rpm -ivh --nodeps *.rpm

进入解压后的nginx目录,然后执行Nginx的配置脚本,为后续的安装提前配置好环境,默认位于/usr/local/nginx/目录下(可自定义目录):

[root@localhost]# cd nginx-1.21.6
[root@localhost]# ./configure --prefix=/soft/nginx/
 

编译并安装Nginx

[root@localhost]# make && make install

最后回到前面的/soft/nginx/目录,输入ls即可看见安装nginx完成后生成的文件。


修改安装后生成的conf目录下的nginx.conf配置文件:

[root@localhost]# vi conf/nginx.conf
    修改端口号:listen    80;
 修改IP地址:server_name  你当前机器的本地IP(线上配置域名);
 

制定配置文件并启动Nginx

[root@localhost]# sbin/nginx -c conf/nginx.conf
[root@localhost]# ps aux | grep nginx

Nginx其他操作命令:

sbin/nginx -t -c conf/nginx.conf # 检测配置文件是否正常
sbin/nginx -s reload -c conf/nginx.conf # 修改配置后平滑重启
sbin/nginx -s quit # 优雅关闭Nginx,会在执行完当前的任务后再退出
sbin/nginx -s stop # 强制终止Nginx,不管当前是否有任务在执行



❿开放80端口,并更新防火墙:

[root@localhost]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@localhost]# firewall-cmd --reload
[root@localhost]# firewall-cmd --zone=public --list-ports
 

⓫在Windows/Mac的浏览器中,直接输入刚刚配置的IP地址访问Nginx


最终看到如上的Nginx欢迎界面,代表Nginx安装完成。


三、Nginx反向代理-负载均衡

首先通过SpringBoot+Freemarker快速搭建一个WEB项目:springboot-web-nginx,然后在该项目中,创建一个IndexNginxController.java文件,逻辑如下:

@Controller
public class IndexNginxController {
    @Value("${server.port}")
    private String port;

    @RequestMapping("/")
    public ModelAndView index(){
        ModelAndView model = new ModelAndView();
        model.addObject("port", port);
        model.setViewName("index");
        return model;
    }
}


在该Controller类中,存在一个成员变量:port,它的值即是从application.properties配置文件中获取server.port值。当出现访问/资源的请求时,跳转前端index页面,并将该值携带返回。

前端的index.ftl文件代码如下:

<html>
    <head>
        <title>Nginx演示页面</title>
        <link href="nginx_style.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
        <div style="border: 2px solid red;margin: auto;width: 800px;text-align: center">
            <div  id="nginx_title">
                <h1>欢迎来到熊猫高级会所,我是竹子${port}号!</h1>
            </div>
        </div>
    </body>
</html>


























标签:nginx,--,Nginx,conf,一网打尽,root,localhost
From: https://www.cnblogs.com/ios9/p/17125059.html

相关文章

  • ubuntu 安装 nginx
    1.在线安装nginxsudoaptupdatesudoapt-yinstallnginx2.检查是否安装成功nginx-v3.安装之后的文件结构#所有的配置文件/etc/nginx#虚拟主机/etc/nginx/......
  • nginx限制ip请求次数 以及并发次数
      如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候。其中CC攻击(ChallengeCollapsar)是DDOS(分布式拒绝服务)的一种,也是一种常......
  • Windows搭建本地PHP8环境,配Nginx
    一、安装PHP 下载:https://windows.php.net/download我下载的是此时的最新版8.2.3 下载后解压目录放到C:/tool下面目录重命名为PHP 目录自己定 我这个tool目......
  • CentOS中使用Docker+nginx部署Vue打包的dist项目
    场景CentOS7中Docker的安装与配置首先按照上面在CentOS7中安装Docker注:关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现1、首先打包Vue项目成dist文......
  • CentOS7中解压tar包的方式安装Nginx
    场景CentOS中怎样安装、配置、启动Nginx:​​CentOS中怎样安装、配置、启动Nginx_BADAO_LIUMANG_QIZHI的博客-博客_centos怎么启动nginx​​上面实现安装nginx的过程简化一下......
  • Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...
    Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...Linux就该这么学 2023-02-1508:02 发表于北京作者:竹子爱熊猫  来源:juejin.cn/post/71......
  • Nginx地址重写功能
    Nginx地址重写功能......
  • nginx开启Gzip压缩,Vue性能优化之使用gzip压缩打包
    一、前言不管是vue项目还是react项目在使用webpack打包之后都会生成一个动辄一两兆甚至更大的js文件,在某些情况下严重影响项目性能,打开页面的时候白屏时间会很长,本文将介绍......
  • Nginx优化HTTPS提速30%
    在上一篇文章我们已经通过HTTP缓存优化静态文件访问速度,今天我们再来聊聊 HTTP协议优化 的问题。HTTP协议优化主要分为开启HTTP/2和ssl缓存优化,下面我们单独对这两种......
  • 使用 nginx 容器部署前端项目并实现负载
    运行nginx镜像1.拉取镜像dockerpullnginx2.运行dockerrun-it--namemynginx-p8080:80-dnginx-t:在新容器内指定一个伪终端或终端。-i:允许你对容器......