Nginx【通俗易懂】《上篇》

目录

1.什么是Nginx💕💕💕

2.Nginx的基本目录💕💕💕

3.基本原理图 💕💕💕

4.Nginx配置 💕💕💕

5.日志的分析 💕💕💕

6.虚拟主机与域名解析💕💕💕

7.正向代理💕💕💕

8.反向代理💕💕💕

9.负载均衡💕💕💕

10.全局异常兜底数据返回💕💕💕


1.什么是Nginx💕💕💕

Nginx是一款高性能的开源Web服务器软件,也可以用作反向代理、负载均衡和HTTP缓存服务。Nginx采用事件驱动异步架构和低内存消耗的设计,能够高效地处理大量并发连接,同时拥有高度的可扩展性和稳定性,已经成为许多大型网站和应用程序的标准选择。

2.Nginx的基本目录💕💕💕

  • 使用 tree命令 查看树状图

如果没有,执行下面操作下载插件!!!

yum -y install tree 

 

3.基本原理图 💕💕💕

master:主进程,负责协调子进程

worker:子进程,工作进程

4.Nginx配置 💕💕💕

4.1全局配置  

打开conf里面的nginx.conf 就会发现有很多配置 ,主要分三个模块

  • 1.全局配置
  • 2.events
  • 3.htpp

  • worker_processes 1:默认为1,表示开启一个业务进程
  • worker_connections 1024:单个业务进程可接受连接数
  • include   mime types:引入http mime类型
  • default_type application/octet-stream:如果mime类型没匹配上,默认使用二进制流的方式传输。
  • sendfile on:使用linux的 sendfile(socket,file,len) 高效网络传输,也就是数据0拷贝。未开启sendfile

4.2server_name

语法

server_name name...;<br/>name可以提供多个中间用空格分隔
默认值server_name
位置server

关于server_name的配置方式有三种,分别是:

  • 1精确匹配 :server_name +域名
  • 2通配符匹配 :用 * 来配置
  • 3正则表达式匹配   

注:匹配顺序:

  • 准确匹配servername
  • 通配符在开始时匹配server_name成功
  • 通配符在结束时匹配server_name成功
  • 正则表达式匹配server_name成功
  • 被默认的default_server处理,如果没有指定默认找第一个server

4.3location

用来配置请求的uri

匹配规则: 

  • 1. location=/uri

=:表示精准匹配,只有完全匹配上才能生效,必须是/uri

  • 2.location /uri 

不带任何修饰符,表示前缀匹配,以/uri开头的即可 

  • 3.location / 

通用匹配,任何未匹配到其他location的请求都会匹配到

  • 4.正则表达式 

~:用于表示当前uri中包含了正则表达式,并且区分大小写

~*:用于表示当前uri中包含了正则表达式,并且不区分大小写

4.4设置请求资源目录 root/alias

1.root

root:设置请求的根目录.

2.alias 

alias:用来更改location的URI.

3.二者区别 

  • 1 root的处理结果是: root路径+location路径.
  • 2. alias的处理结果是:使用alias路径替换location路径.
  • 3.alias是一个目录别名的定义,root则是最上层目录的含义.
  • 4.如果location路径是以/结尾,则alias也必须是以/结尾,root没有要求.

4.5error_page 

error_page:设置网站的错误页面

语法error_page code ... [=[response]]uri;  code:错误状态码

位置http, server, location

后续处理有三种方式:

  • 1.指定具体的跳转地址 
 error_page 404 http://www.baidu.com;
  • 2.直接指定重定向地址 
 error_page 404 500 503 504 502 /50x.html;

         location =/50x.html {
             root html;
         }
  • 3.使用@符号 
 error_page 404  @jump_to_error;

         location @jump_to_error {
            default_type text/html;
            return 404 "<h1>NOT FOUND</h1>";
         }
  • 4. 返回状态码
       error_page 404 500 502 503 504 505 =200   @jump_to_error;
         location @jump_to_error {
            default_type text/html;
            return 200 "<h1>NOT FOUND</h1>";
         }

注:如果开启了负载均衡,若要配置错误页面,一定要开启错误拦截 

  #开启错误拦截配置,一定要开启
  proxy_intercept_errors on;

5.日志的分析 💕💕💕

 5.1日志的配置 

  • 重新指定日志的输入文件
access_log logs/xz.log;
  • 指定日志文件的输出格式 
log_format xzformat '=====This is myformat';

    access_log logs/xz.log xzformat;

5.2日志的常见操作

  • cd /usr/local/nginx/logs 进入目录

  • access.log:用户信息访问日志
  • error.log:错误信息日志
  • nginx.pid:主线程号  
  • 查看访问最频繁的前5个IP 
awk '{print $1}' access.log | sort -n | uniq -c | sort -rn | head -n 5
  • 统计访问最多的url前10名 
cat access.log | awk '{print $7}' | sort |uniq -c | sort -rn | head -n 10 | more
  • awk 是文本处理工具,默认按照空格切分,$N 是第切割后第N个,从1开始
  • sort命令用于将文本文件内容加以排序,-n按照数值排,-r按照倒序来排,案例的sort -n 是按照第一列的数值大小进行排序,从小到大,倒序就是 sort -rn
  • uniq 去除重复出现的行列,-c在每列旁边显示该行重复出现的次数。

6.虚拟主机与域名解析💕💕💕

6.1windows设置虚拟机域名解析 

  • 1、首先找到host文件: C:\Windows\System32\drivers\etc
  • 2、打开host文件,添加自己虚拟机的 ip + 域名

注意:如果有权限限制,可以先复制到桌面然后再粘贴过去

  • win+R,测试这个网址是否ping通 

  • 然后在浏览器输入该网址:aabbcc.com,也可以访问到nginx页面 

  • Nginx虚拟主机的配置 

利用虚拟主机把多个不同域名的网站部署在同一台服务器上,节省了服务器硬件成本和相关的维护费用

6.2使用Nginx搭建图片-文件服务器 

  • server(相当于虚拟主机)配置
server {
         listen       80;
         server_name  aabbccdd.com;
         location /app/img { 接收请求的字符串
           alias /usr/local/software/img/;
        
         }
     }

7.正向代理💕💕💕

 正向代理:顺着请求的方向进行的代理,即代理服务器它是由你配置为你服务去请求目标服务器地址。 

例如:如我们现在想要访问外网,但是由于某些原因,无法直接访问到外网,我们可以通过连接一台代理服务器,代理服务将我们的请求提交到外网,然后再将外网的响应反馈给我们,对于外网而言,它只知道有一个请求过来,但是它并不会知道我们是无法直接访问它的。

作用:

  • 访问外网:企业内部网络中的用户可以通过正向代理服务器访问外网,提高访问效率和安全性;

  • 加速访问:使用正向代理可以缓存经常访问的网站内容,减少重复下载,提高访问速度;

  • 访问控制:通过正向代理可以对外网访问进行访问控制,限制或允许一些特定的网站或服务;

  • 防止攻击:正向代理可以过滤掉一些恶意的流量和攻击,提高网络安全性;

  • 匿名访问:正向代理可以保护用户的个人隐私,使用户的真实IP地址不被外部网站所知道。

 

8.反向代理💕💕💕

反向代理: 跟正向代理相反,它是为目标服务器进行服务的,但是请求的流程还是: clieng -> proxy -> server 

作用:

  • 负载均衡:通过将请求分发给多个服务器,实现请求的负载均衡,提高应用服务的可用性和性能。

  • 缓存加速:可以缓存静态资源,减轻后端服务器的压力,提高访问速度和响应能力。

  • 安全过滤:可以过滤恶意请求,防止DDoS攻击和其他安全问题。

  • SSL加速:可以对SSL协议进行加速,提高网站的安全性和性能。

  • 反向代理:可以隐藏后端服务器的信息,保护服务器的安全性和隐私性。

小张认为:正向代理和方向代理其实本质没啥区别,只是 站在不同位置,做相同事情 

9.负载均衡💕💕💕

9.1初识负载均衡 

负载均衡:把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器,从而使该服务器宕机的情况。

  • 1.准备两个jar包

demo-01.jar监听8080端口

demo-02.jar监听8081端口

接口说明

  • 接口一GET请求,返回json数据,控制输出日志http://127.0.0.1:8080/api/v1/pub/info/check
  • 接口二返回HTML页面,两个jar返回的HTML内容不一样,方便区分访问的是哪个jarhttp://localhost:8080/api/v1/pub/web 
  • 2.守护进程启动两个jar包

nohup java -jar demo-1.jar &

nohup java -jar demo-2.jar &

  •  配置节点和代理
upstream hqdmdxz { 
    server 192.168.0.106:8080;
    server 192.168.0.106:8081;
}

location /api/ {
     proxy_pass http://hqdmdxz; 
     proxy_redirect default;
}
  • 代理解析 

9.2负载均衡策略 

1.轮询(默认)

  • 每个请求按顺序分配到不同的后端服务器
  • 场景:会造成可靠性低和负载分配不均衡,适合静态文件服务器

2.权重

  • weight和访问比率成正比,数字越大,分配得到的流量越高
  • 场景:服务器性能差异大的情况使用 
 #upstream:虚拟服务池
 upstream hqdmdxz {  
        server 192.168.20.129:8080 weight=10;
        server 192.168.20.129:8081 weight=5;
     }

 3.ip_hash(固定分发)

  • 根据请求按访问ip的hash结果分配,这样每个用户就可以固定访问一个后端服务器场景:服务器业务分区、业务缓存、Session需要单点的情况
upstream hqdmdxz {
        ip_hash;
        server 192.168.20.129:8080;
        server 192.168.20.129:8081;
     }

4.设置状态值

  • down:表示当前server暂时不参与负载
 upstream hqdmdxz {
        server 192.168.20.129:8080 down;
        server 192.168.20.129:8081;
     }
  • backup: 其它所有的非backup机器down的时候,会请求backup机器,这台机器压力会最轻,配置也会相对低
upstream hqdmdxz {
        server 192.168.20.129:8080;
        server 192.168.20.129:8081 backup;
     }

9.3后端节点可用性探测

  • 如果某个应用挂了,请求不应该继续分发过去
  • max_fails 允许请求失败的次数,默认为1.当超过最大次数时就不会请求
  • fail_timeout:max_fails次失败后,暂停的时间,默认:fail_timeout为10s
  • 可以通过指令proxy_next_upstream来配置什么是失败的尝试。
  upstream hqdmdxz {
        server 192.168.20.129:8080 max_fails=3 fails_timeout=60s;
        server 192.168.20.129:8081 max_fails=3 fails_timeout=60s;
     }

    server {
        listen       80;
        server_name  aabbcc.com;

        location /api {
           proxy_pass http://hqdmdxz;
           proxy_redirect default;
           proxy_next_upstream error timeout http_500 http_503 http_404;
        }

10.全局异常兜底数据返回💕💕💕

server {
        listen       80;
        server_name  aabbcc.com;

        location /api {
           proxy_pass http://hqdmdxz;
           proxy_redirect default;
           proxy_next_upstream error timeout http_500 http_503 http_404;
           #开启错误拦截配置,一定要开启
           proxy_intercept_errors on;
         
         error_page 404 500  502 503 504 /default_api;

      # 不加 =200,则返回的就是原先的http错误码;配上后如果出现500等错误都返回给用户200状态,并跳 
       转至/default_api
         location = /default_api {
            default_type application/json;
            return 200 '{"code":"-1","msg":"invoke" fail,not found}';
         }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Matlab数学建模算法之小波神经网络详解

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 &#x1f510;#### 防伪水印——左手の明天 ####&#x1f510; &#x1f497; 大家…

Linux6-配置网络、源码包的编译和安装

配置 linux 网络 配置主机名 修改/etc/hostname 配置文件&#xff0c;永久配置主机名 [rootlocalhost ~]# vim /etc/hostname svr7.tedu.cn [rootlocalhost ~]# cat /etc/hostname svr7.tedu.cn [rootlocalhost ~]# reboot #重启生效命令行永久修改主机名 [rootlocalhost ~…

vivado时序方法检查11

TIMING-47 &#xff1a; 同步时钟之间的伪路径、异步时钟组或仅最 大延迟数据路径约束 在 <clock_group> 与 <clock_group> 这两个时钟之间设置了 <message_string> 时序约束 &#xff08; 请参阅 VivadoIDE 的“ Timing Constraint ”窗口中的约束位…

Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

整合,降价,官司……2023休闲零食行业大变局

休闲零食行业正从暗战走向明战。 11月27日&#xff0c;宁波广源聚亿投资有限公司&#xff08;以下简称“广源聚亿”&#xff09;因被投企业宜春赵一鸣食品科技有限公司&#xff08;以下简称“赵一鸣”&#xff09;在双方合作期内&#xff0c;刻意隐瞒公司重大事项&#xff0c;…

什么叫应用加速,什么情况需要用到应用加速

应用加速的定义 应用加速依赖节点之间的高速通道、转发集群及智能路由技术&#xff0c;实现各地用户的就近接入&#xff0c;通过高速通道直达源站区域&#xff0c;帮助业务解决用户访问卡顿或者延迟过高的问题。使用高速网络和全球范围内的节点技术&#xff0c;确保传输时间和…

1829_org-mode的标记语法

org-mode的标记语法 Grey 全部学习汇总&#xff1a; GitHub - GreyZhang/g_org: my learning trip for org-mode 如果用org-mode来做笔记&#xff0c;现在看起来还是有一些短板让我觉得不是很方便。不过&#xff0c;我发现采用这种方式整理信息的时候会有较为深度的思考。因…

flstudio21.3完整高级版怎么下载?有哪些新功能

flstudio高级版是一款适用于广泛领域的音频编辑软件。它支持多通道混音器和VST插件&#xff0c;包括数百种乐器和效果插件。它还为您提供了一个乐谱编辑器&#xff0c;需要对不同乐器的节奏进行必要的编辑。Flstudio具有许多内置电子合成声音&#xff0c;可提供更广泛的电子声音…

MySQL - 表达式With as 语句的使用及练习

目录 8.1 WITH AS 的含义 8.2 WITH AS语法的基本结构如下&#xff1a; 8.3 练习题1 8.4 牛客练习题 8.1 WITH AS 的含义 WITH AS 语法是MySQL中的一种临时结果集&#xff0c;它可以在SELECT、INSERT、UPDATE或DELETE语句中使用。通过使用WITH AS语句&#xff0c;可以将一个查…

荒野大镖客emp.dll文件丢失怎么办?6种有效修复方法教你如何解决问题

在计算机运行软件游戏的使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到emp.dll&#xff0c;无法继续执行代码”。这个问题的出现往往会导致程序无法正常运行&#xff0c;给用户带来困扰。本文将详细介绍emp.dll丢失的原因、对电脑的影响以…

力扣思维题/经典面试题——下一个排序

https://leetcode.cn/problems/next-permutation/description/ 字节面试题&#xff0c;非常经典的逻辑思维题 1、找到第一个下降点&#xff0c;说明这个点可以变得稍微大一点以至于让整个排列变得更加大 为什么&#xff0c;仔细想想&#xff0c;后面都是倒序了怎么都不可能变得…

Blender学习--制作带骨骼动画的机器人

1. 首先创建一个机器人模型 时间关系&#xff0c;这部分步骤有时间补充 2. 然后为机器人创建一副骨架 时间关系&#xff0c;这部分步骤有时间补充 3.骨骼绑定 切换到物体模式&#xff0c;选中机器人头部&#xff0c;Shift选中骨骼&#xff0c;切换到姿态模式&#xff0c;&am…

Linux系统调试课:I2C tools调试工具

文章目录 一、如何使用I2C tools测试I2C外设1、I2C tools概述: 2、下载I2C tools源码:3、编译I2C tools源码: 4、i2cdetect 5、i2cget 6、i2cdump

校园圈子系统丨交友丨地图找伴丨二手市场等功能丨源码交付支持二开丨APP小程序H5三端交付!

校园圈子系统是一款专为校园生活设计的智能应用&#xff0c;拥有丰富多样的功能模块&#xff0c;提供全方位的服务。无论您是师生还是校友&#xff0c;我们都为您打造了一个与校园紧密相连的交流平台。 通过校园圈子系统&#xff0c;您可以方便地浏览校内最新动态&#xff0c;包…

【BUG】微信小程序扫码获取不到scene参数的bug修复

问题描述&#xff1a; 扫码后获取不到scene&#xff0c;必须点击“重新进入小程序”才可以 错误原因&#xff1a; 微信小程序的二维码扫描分为两种情况&#xff1a; 冷启动&#xff1a;当用户首次扫描二维码或在后台无该小程序运行实例时打开小程序&#xff0c;此时可以通过…

PAD平板签约投屏-高端活动的选择

传统的现场纸质签约仪式除了缺乏仪式感之外还缺少互动性&#xff0c;如果要将签约的过程投放到大屏幕上更是需要额外的硬件设备成本。相比于传统的纸质签约仪式&#xff0c;平板现场电子签约的形式更加的新颖、更富有科技感、更具有仪式感。 平板签约投屏是应用于会议签字仪式的…

12.9_黑马数据结构与算法笔记Java

目录 057 多路递归 e03 杨辉三角2 thinking&#xff1a;二维数组的动态初始化&#xff1f; 057 多路递归 e03 杨辉三角3 058 链表 e01 反转单向链表1 058 链表 e01 反转单向链表2 058 链表 e01 反转单向链表3 递归 058 链表 e01 反转单向链表4 为什么是returnn1呢&…

【51单片机系列】独立按键介绍

本文是关于独立按键的介绍及使用。首先介绍了按键&#xff0c;包括什么是按键及使用按键时如何实现软件消抖。然后使用proteus仿真实现独立按键控制LED指示灯的操作。 之前的LED、蜂鸣器、数码管中IO口都是作为输出使用&#xff0c;这里通过独立按键实验介绍IO口作为输入的使用…

GPIO的使用--滴答定时器--pir人体红外传感器

目录 一、滴答定时器的使用与原理 1、定义 2、原理 &#xff08;1&#xff09;向上计数​编辑 &#xff08;2&#xff09;向下计数 &#xff08;3&#xff09; 代码流程 a、配置滴答时钟唤醒频率 b、滴答时钟中断函数 &#xff08;4&#xff09;结果 3、优化-->寄存…

CSK6环境搭建

前期准备 开发板测试 &#xff08;1&#xff09;根据这个视频教程来进行测试&#xff1a;示例工程快速上手 Ubuntu环境搭建 &#xff08;1&#xff09;聆思官方推荐使用Linux开发&#xff0c;因此我于是采用VMware搭建Ubuntu的方式进行开发。不清楚Ubuntu搭建的请看&#xff1…