由浅入深学习nginx

news2024/10/6 12:22:35

nginx(高性能的http和反向代理服务器)的优点:
(1)占有内存少
(2)并发能力强(支持5万个)
(3)专为性能优化而开发
nginx主要可以实现的功能有这么几个,反向代理,负载均衡和动静分离以及高可用这几个功能。

nginx文件配置的说明:

三部分组成
(1)全局块
#从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括
运行nginx服务器的用户,允许生成的worker process数,锦程PID存放路径,日志存放路径和类型以及
配置文件的引入

# 全局块
#user  nobody;


# 表示nginx服务器并发处理服务的关键配置,worker_process值越大,可以支持的并发处理量也越多
# 但是会受到硬件,软件等设备的制约
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

(2)events块

# 主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对work process下的
# 网络连接进行序列化,是否允许同事接收多个网络连接,选取哪种事件驱动模型来处理连接
# 请求,每个word process可以同时支持的最大连接数
events {
    worker_connections  1024;
}

(3)http块

反向代理

1.正向代理
在这里插入图片描述
2.反向代理
1.客户端不需要做任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端。此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器ip地址
在这里插入图片描述
(1)反向代理实例1
实现效果: 浏览器中输入www.123.com,通过nginx定位到192.168.17.129:80,然后再转发到127.0.0.1:8000,对外暴露的是192.168.17.129:80,域名www.123.com在windows的host文件进行配置。

http {
    include       mime.types;
    default_type  application/octet-stream;

    #access_log  logs/access.log  main;

    sendfile        on;

    #gzip  on;
    # sever和虚拟机有密切关系,包括全局sever块和location块
    server {
        # 监听的端口号是8080端口号
        listen       8080;
        # 监听的主机名称是localhost
        server_name  192.168.17.128;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        # 在访问192.168.17.128的时候会通过location给你进行转接
        location / {
            root   D:/vue3管理系统/admin/dist/;
            # 当访问到192.168.17.1288080的时候,就会给咱们转发到http://127.0.0.1:8080
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
       
        #\.php$相当于是个路径正则校验,当你访问的路径中有\.php$,然后做一些请求的跳转
        # 或者是相关的操作
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    }

}

(2)反向代理实例2
实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001
(1)访问http://127.0.0.1:9001/edu/的时候直接跳转到127.0.0.1:8081
(2)访问http://127.0…0.1:9001/vod/的时候直接跳转到127.0.0.1:8082

server {
       listen       9001;
       server_name  192.168.17.129;
    #    ~  这个符号表示咱们用的是正则校验,
    # 当路径中有edu,就给转发到http://localhost:8081
       location ~ /edu/ {
            proxy_pass http://localhost:8081;
       }
    #    当路径中有vod,就给转发到http://localhost:8002
       location ~ /vod/ {
            proxy_pass http://localhost:8002;
       }
}

负载均衡(也可以叫请求均衡)

#实现效果:(1)在浏览器地址栏中输入地址http://192.168.17.129/edu/a.html,负载均衡效果 平均8080和8081端口中

在这里插入图片描述

http {
    # 已进行负载均衡的ip列表
    # myserver是起的名字
    upstream myserver {
        # 分配策略
        # (1)轮询
        # 默认策略:每个请求按时间顺序注意分配到不同的后端服务器,服务器当季会自动剔除服务器

        #  (2)weight
        # weight代表权重,权重约个奥被分配的客户端越多
        server 192.168.17.128:8080 weight = 1;
        server 192.168.17.128:8180 weight = 1;
        # (3)ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个
        # 后端服务器,可以解决session的问题(第一次访问的是哪台服务器,以后就访问哪台服务器)

        # ip_hash
        # server 192.168.17.128:8080 ;
        # server 192.168.17.128:8180 ;

        # (4)fair第三方
        # 按照后端服务器的响应时间分配请求,响应时间端的优先分配

        # server 192.168.17.128:8080 ;
        # server 192.168.17.128:8180 ;
        # fair;
    }
    server {
        # 监听的端口号是8080端口号
        listen       8080;
        # 监听的主机名称是localhost
        server_name  192.168.17.128;
        # 在访问192.168.17.128的时候会通过location给你进行转接
        location / {
            root   html;
            # 当访问到192.168.17.1288080的时候,就会给咱们转发到					#http://127.0.0.1:8080	
            proxy_pass http://myserver;
            index  index.html index.htm;
        }

}

动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器解析,加快解析的进度,降低单个服务器的压力。
通过location指定不同的后缀名实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求与流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。我这里设置3d,表示在这三天之内访问这个url,发送一个请求,比对服务器该文件最后时间有没有变化,则不会从服务器抓取,返回状态码304.如有修改,则直接从服务器重新下载,返回状态码200+。


# 三部分组成
# (1)全局块
# 从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括
# 运行nginx服务器的用户,允许生成的worker process数,锦程PID存放路径,日志存放路径和类型以及
# 配置文件的引入


# (2)events块
# (3)http块


# 全局块
#user  nobody;


# 表示nginx服务器并发处理服务的关键配置,worker_process值越大,可以支持的并发处理量也越多
# 但是会受到硬件,软件等设备的制约
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;



# 主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对work process下的
# 网络连接进行序列化,是否允许同事接收多个网络连接,选取哪种事件驱动模型来处理连接
# 请求,每个word process可以同时支持的最大连接数
events {
    worker_connections  1024;
}

# 实现效果
# (1)在浏览器地址栏中输入地址http://192.168.17.129/edu/a.html,负载均衡效果
# 平均80808081端口中
# (


http {
    }
    server {
        # 监听的端口号是8080端口号
        listen       8080;
        # 监听的主机名称是localhost
        server_name  192.168.17.128;
        # 在访问192.168.17.128的时候会通过location给你进行转接
        location /www/ {
            root   /data/;
            index  index.html index.htm;
        }
        # 访问路径http://192.168.17.128/image/01.jpg
        location /image/ {
            root   /data/;
            autoindex on;
        }
}

高可用
在这里插入图片描述
如何实现:
在这里插入图片描述

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

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

相关文章

FL Studio2024破解版激活码许可证

fl studio 21中文版具备直观的界面和强大的编辑功能,使您能够轻松地调整和精确控制音频轨道。您可以实时录制、编辑和处理多个音轨,轻松实现混音和编曲。无论您是专业音乐制作人还是初学者,都能满足您的需求,并帮助您实现创作梦想…

正则表达式[总结]

文章目录 1. 为什么要学习正则表达式2. 再提出几个问题?3. 解决之道-正则表达式4. 正则表达式基本介绍5. 正则表达式底层实现(重要)6. 正则表达式语法6.1 基本介绍6.2 元字符(Metacharacter)-转义号 \\\6.3 元字符-字符匹配符6.4 元字符-选择匹配符6.5 元字符-限定符…

Git学习笔记——超详细

Git笔记 安装git: apt install git 创建版本库: git init 添加文件到版本库: git add 文件 提交文件到仓库: git commit -m “注释” 查看仓库当前的状态信息: git status 查看修改内容和之前版本的区别&am…

抖音热搜榜:探索热门话题,引领潮流新风尚

在信息爆炸的时代,我们每天都在接收大量的新鲜资讯。而作为短视频领域的佼佼者,抖音已经成为了众多网友获取信息、娱乐休闲的重要平台。抖音热搜榜更是凭借其独特的魅力,吸引了无数用户的关注。本文将为您深度解析抖音热搜榜,带您…

vue2 element手术麻醉信息系统源码,手术预约、手术安排、排班查询、手术麻醉监测、麻醉记录单

手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字化,自动生成麻…

顺应趋势,用大数据精准营销抓住大数据时代的机遇

想先问大家一个问题:“你觉得现在的营销好做吗?”想必大多数人在说到自己如何营销这一点上,都有道不完的“苦水”。“现在找客户难,投了几十万的广告费,真正来的客户却少得可怜,平均获客成本高得吓人”一位…

AD9371 官方例程HDL详解(一)

文章目录 前言一、AD9371 ----> FMC_DP二、FMC_DP ----> FPGA_TX/RX三、rx_data_x and tx_data_x must be connected to the same channel四、ADRV9009 前言 axi_ad9371_tx_jesd --> util_ad9371_xcvr接口映射讲解 一、AD9371 ----> FMC_DP AD9371内部原理图 …

[计算机网络基础]数据链路层

相比于网络层,数据链路层的内容多而且很杂,因为同时涉及到一些物理和网络的东西,甚至内容很冗杂.因为一些原因,这篇文章将主要以对比为主,而不是完全树形展开,方便各位看官理解. 这篇我估计要写上整整两天......太多了......各位看官尤其是同学们,来个赞/收藏/关注呗 1.关于数…

StudioOne升级6.5版本,最新功能测评

PreSonus流行的Studio One DAW的最新更新现已发布,标题功能是许多用户一直在等待的:支持包括杜比全景声在内的沉浸式音频格式。该软件的分数编辑器也已更新,以及其他一些一般增强和改进, 集成 Dolby Atmos 的 Studio One 正式发布…

【JavaEE】CAS -- 多线程篇(7)

CAS 1. 什么是 CAS2. CAS 伪代码3. CAS 是怎么实现的4. CAS的应用4.1 实现原子类4.2 实现自旋锁 5. CAS 的 ABA 问题 1. 什么是 CAS CAS: 全称Compare and swap,字面意思:”比较并交换“能够比较和交换 某个寄存器中的值和内存中的值, 看是否相等, 如果相等, 则把另…

三、组件与数据交互

一、组件基础 1、单文件组件 第一步&#xff1a;引入组件 import ComponentTest from ./components/ComponentTest.vue 第二步&#xff1a;挂载组件 components: {ComponentTest } 第三步&#xff1a;显示组件 <ComponentTest></ComponentTest><!-- 父组件 --…

python requests爬取税务总局税案通报、税务新闻和政策解读

文章目录 环境配置页面爬取流程税案通报爬取code税务新闻爬取政策解读爬取 环境配置 python&#xff1a;3.7 requests&#xff1a;发出请求&#xff0c;返回页面 beautifulsoup&#xff1a;解析页面 time&#xff1a;及时 warnings&#xff1a;忽视警告 页面 网址&#xff1…

游戏d3dcompiler_43.dll缺失怎么修复,分享5个快速有效的修复方法

最近我遇到了一个特别棘手的问题&#xff1a;当我试图运行一款新的游戏时&#xff0c;我收到一个令人困惑的错误消息&#xff0c;提示“d3dcompiler_43.dll丢失”。这个问题给我的游戏生活带来了很大的困扰&#xff0c;因为我热爱的游戏突然之间变得无法游玩。在这篇文章中&…

Android屏幕刷新机制

基础知识 CPU运行在Android设备上的中央处理器&#xff08;Central Processing Unit&#xff09;是Android设备的核心组件之一&#xff0c;负责执行计算和控制设备的各种操作。 Android设备上的CPU通常采用ARM架构&#xff0c;如ARM Cortex-A系列处理器。这些处理器具有高性能…

C++ Primer笔记002:引用/指针/const

文章目录 1. 引用1.1 引用不是对象或变量1.2 引用必须初始化1.3 不能定义引用的引用1.4 引用类型要适配1.5 非const引用不能绑定字面值 2. 指针2.1 指针和引用的区别2.2 指针的指针2.3 类型一致2.4 指针的引用2.5 void 型指针 3. const3.1 const的基本作用3.2 对const变量的引用…

【VisualStudio 】VisualStudio2022 项目模板

引言 最近写项目已经形成的自己的套路&#xff1a;新建一个prism工程&#xff0c;添加主界面&#xff0c;配置界面&#xff0c;等&#xff0c;很多常用功能已经封装成项目进行复用。如果每次来了一个新的活&#xff0c;重新配置这些都是完全重复的工作&#xff08;大概需要十几…

第三章 Python 机器学习入门之C4.5决策树算法

系列文章目录 第一章 Python 机器学习入门之线性回归 第一章 Python 机器学习入门之梯度下降法 第一章 Python 机器学习入门之牛顿法 第二章 Python 机器学习入门之逻辑回归 番外 Python 机器学习入门之K近邻算法 番外 Python 机器学习入门之K-Means聚类算法 第三章 Python 机…

C++多态、虚函数、纯虚函数、抽象类

多态的概念 通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 举个简单的例子&#xff1a;抢红包&#xff0c;我们每个人都只需要点击一下红包&#xff0c;就会抢到金额。有些人能…

Windows11突然VM虚拟机无法运行报错与 Device/Credential Guard 不兼容

windows11长时间没用vmware,突然使用时打开报一下错&#xff1a; 解决方案&#xff1a; 以管理员身份运行“Windows Powershell (管理员)”&#xff08;Windows键X键&#xff09;&#xff0c;输入以下命令重启电脑。 bcdedit /set hypervisorlaunchtype off 注意&#xff1a…

有哪些专业的配音APP推荐?

作为当今社交媒体时代的一员&#xff0c;我们经常需要在各种场合中使用配音软件&#xff0c;无论是自制视频内容还是进行个人创作&#xff0c;一款好用且免费的配音软件显得很重要。今天给大家分享一款备受好评的免费配音软件&#xff0c;它不仅功能强大&#xff0c;而且操作简…