当前位置: 首页 > news >正文

nginx使用详解

文章目录

  • 一、前言
  • 二、nginx使用详解
    • 2.1、nginx特点
    • 2.2 静态文件处理
    • 2.3 反向代理
    • 2.4 负载均衡
    • 2.5 高级用法
      • 2.5.1 正则表达式匹配
      • 2.5.2 重定向
  • 三、总结

一、前言

本文将详细介绍nginx的各个功能使用,主要包括

二、nginx使用详解

2.1、nginx特点

  • 高性能:Nginx被设计成具有出色的性能。它采用事件驱动的异步架构,能够处理大量并发连接,高效地分发请求和响应。这使得Nginx非常适合用作反向代理、负载均衡器和Web服务器。

  • 轻量级:Nginx的内存占用非常低,资源消耗较小。这使得它能够在资源有限的环境中运行,如嵌入式设备和虚拟私有服务器(VPS)。

  • 高可用性:Nginx支持热部署和无缝升级,可以确保服务的高可用性。它还提供了健康检查和故障转移功能,以防止单点故障。

  • 反向代理和负载均衡:Nginx可以作为反向代理服务器,将客户端请求分发给多个后端服务器,实现负载均衡。这有助于提高应用程序的可伸缩性和性能。

  • 静态文件服务:Nginx能够高效地提供静态文件,如HTML、CSS、JavaScript和图像。它还支持文件缓存和浏览器缓存控制,以减少带宽消耗和提高网站速度。

2.2 静态文件处理

Nginx非常适合处理静态文件,如HTML、CSS、JavaScript、图像等。静态文件处理是通过配置Nginx来指定Web服务器从文件系统中提供这些文件。

配置示例:

server {listen 80;server_name example.com;location /static/ {alias /path/to/static/files/;}location / {# 其他配置,例如反向代理或动态内容处理}
}
  • location /static/指定了一个URL路径,如/static/,Nginx将会从/path/to/static/files/目录中提供静态文件。
  • alias指令用于指定文件存储路径。

2.3 反向代理

说到反向代理就要先说正向代理:
正向代理最大的特点是:客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,正向代理模式屏蔽或者隐藏了真实客户端信息。
例如:在大陆访问www.google.com,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。下面是一个正向代理的图示:
在这里插入图片描述
反向代理,客户端堆代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器。
在这里插入图片描述

由于反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

Nginx可以用作反向代理服务器,将客户端请求转发到后端服务器,并将后端服务器的响应返回给客户端。这对于隐藏后端服务器、负载均衡、加速应用程序等非常有用。

配置示例:

server {listen 80;server_name example.com;location / {proxy_pass http://backend_server;}
}upstream backend_server {server backend1.example.com;server backend2.example.com;
}
  • proxy_pass指令将请求代理到名为backend_server的上游服务器池,其中包括多个后端服务器。
  • upstream块定义了后端服务器池,可以包括多个后端服务器。

2.4 负载均衡

Nginx可以实现负载均衡,将客户端请求均匀地分发到多个后端服务器上,提高系统的可伸缩性和性能。

配置示例:

upstream backend_servers {server backend1.example.com;server backend2.example.com;server backend3.example.com;
}server {listen 80;server_name example.com;location / {proxy_pass http://backend_servers;proxy_set_header Host $host;}
}
  • upstream块定义了包含多个后端服务器的服务器池。
  • proxy_pass指令将请求代理到backend_servers上游服务器池,实现负载均衡。

2.5 高级用法

2.5.1 正则表达式匹配

Nginx支持正则表达式匹配,可以根据复杂的URL匹配规则来定制请求处理。

示例:

server {listen 80;server_name example.com;location ~ ^/blog/post/\d+ {# 匹配像 /blog/post/123 的URL# 进行特定处理}location ~* \.(jpg|png|gif)$ {# 匹配图片文件扩展名的URL# 进行缓存或其他处理}
}
  • ~~*修饰符用于正则表达式匹配。
  • 第一个location块匹配像 /blog/post/123 这样的URL。
  • 第二个location块匹配以 .jpg.png.gif 结尾的URL。

2.5.2 重定向

Nginx允许对请求进行重定向,可以将请求从一个URL重定向到另一个URL。

示例:

server {listen 80;server_name example.com;location /old-url {return 301 /new-url;}location /external-link {return 302 http://external-website.com;}
}
  • return 301return 302指令用于执行永久重定向和临时重定向。
  • 第一个location块将 /old-url 重定向到 /new-url
  • 第二个location块将 /external-link 重定向到外部网站 http://external-website.com

三、总结

这些是Nginx的一些高级用法示例,Nginx非常强大和灵活,可以根据具体需求配置各种复杂的规则和行为。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

相关文章:

nginx使用详解

文章目录 一、前言二、nginx使用详解2.1、nginx特点2.2 静态文件处理2.3 反向代理2.4 负载均衡2.5 高级用法2.5.1 正则表达式匹配2.5.2 重定向 三、总结 一、前言 本文将详细介绍nginx的各个功能使用,主要包括 二、nginx使用详解 2.1、nginx特点 高性能&#xff…...

YOLOV7 添加 CBAM 注意力机制

用于学习记录 文章目录 前言一、CBAM1.1 models/common.py1.2 models/yolo.py1.3 yolov7/cfg/training/CBAM.yaml2.4 CBAM 训练结果图 前言 一、CBAM CBAM: Convolutional Block Attention Module 1.1 models/common.py class ChannelAttention(nn.Module):def __init__(sel…...

【SpringSecurity】七、SpringSecurity集成thymeleaf

文章目录 1、thymeleaf2、依赖部分3、定义Controller4、创建静态页面5、WebSecurityConfigurerAdapter6、权限相关7、当用户没有某权限时,页面不展示该按钮 1、thymeleaf 查了下读音,leaf/li:f/,叶子,前面的单词发音和时间time一…...

Go语言中的数组、切片和映射解析

目录 数组数组的声明数组循环 切片切片声明切片元素循环 映射Map的声明及初始化Map的遍历 数组 数组存放的是固定长度、相同类型的数据,而且这些存放的元素是连续的。 数组的声明 例如声明一个整形数组: array : [3]int{1, 2, 3}在类型名前加 [] 中括…...

MySql学习笔记03——DQL(数据查询)基本命令

DQL 导入数据 首先使用use database进入数据库中,然后使用命令 source D:\mysql_learning\mysql_learning\document\bjpowernode.sql注意文件名不能有双引号,命令结尾没有分号。 SQL脚本 .sql文件是SQL脚本文件,它里面的内容都是SQL语句…...

操作系统的四大特性

一、并发性 指操作系统同时运行着多个程序,这些程序宏观上是同时运行的,但微观上其实是交替运行的 补充1:并发性区别于并行性 并发是指两个或多个事件在同一时间间隔内发生,事件宏观上是同时进行的,围观上市交替进行的…...

旅游攻略APP外包开发功能

旅游攻略APP是帮助旅行者计划和享受旅行的工具,下面列出了一些常见的旅游攻略APP功能,以及在上线这类应用时需要注意的问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 常见…...

Apollo在Java中的使用

本节主要讲解在普通的 Java 项目和 Spring Boot 中如何使用 Apollo。 普通 Java 项目中使用 加入 Apollo Client 的 Maven 依赖&#xff0c;代码如下所示。 <dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client<…...

Elasticsearch 全文搜索引擎 ---- IK分词器

原理&#xff1a;分词的原理&#xff1a;二叉树 首先讲一下为什么要出这个文章&#xff0c;前面我们讲过分词方法&#xff1a;中文分词搜索 pscws&#xff08;感兴趣的同学可以去爬楼看一下&#xff09;&#xff0c;那为什么要讲IK分词&#xff1f;最主要的原因是&…...

Layer 2盛夏已至,StarkNet如何实现价值跃迁?

作者&#xff5c;Jason Jiang Layer 2概念在2023年夏天迎来爆发。Coinbase、ConsenSys等加密巨头纷纷下场&#xff0c;其部署的原生L2解决方案Base、Linea在过去两个月内相继完成主网上线&#xff1b;被誉为L2 四大天王之一的StarkNet也在夏天顺利完成“量子跃迁”升级&#x…...

KaiwuDB 受邀亮相 2023 中国国际“软博会”

8月31日&#xff0c;第二十五届中国国际软件博览会&#xff08;以下简称“软博会”&#xff09;在天津盛大开幕。KaiwuDB 受邀亮相展会&#xff0c;围绕“塑造软件新生态&#xff0c;赋能发展新变革”主题&#xff0c;重点展示自研分布式多模数据库及各大行业解决方案&#xff…...

RS-485/RS-422收发器电路 DP3085 国产低成本替代MAX3085

DP3085是5V、半双工、15kV ESD 保护的 RS-485/RS-422 收发器电路&#xff0c;电路内部包含一路驱动器和一路接收器。 DP3085具有增强的摆率限制&#xff0c;助于降低输出 EMI 以及不匹配的终端连接引起的反射&#xff0c;实现 500kbps 的无误码数据传输。 DP3085芯片接收器输入…...

R-which函数(带有arr.ind参数)

目录 一、which()函数 二、元素位置 一、which()函数 which()函数是R语言中的一个基础函数&#xff0c;用于返回满足指定条件的元素的位置或索引。 语法&#xff1a;which(x, arr.ind FALSE, useNames TRUE) 参数&#xff1a; - x&#xff1a;一个向量、数组或矩阵&#x…...

单片机通用学习-什么是时钟?

什么是时钟&#xff1f; 时钟是同步单片机系统各个部件工作时序的最小时间单位&#xff0c;时钟通过 CPU 控制&#xff0c;产生其他与时钟保持一定关系的同步控制信号&#xff0c;协调各部件的工作时序&#xff0c;没有时钟系统就崩溃了。 如 CPU 与存储器&#xff08;RAM&am…...

PCL入门(二):初识点云数据

目录 1. 点云数据2. 对点云数据的简单操作3. 结果 1. 点云数据 在pcl里面&#xff0c;定义了很多点云数据类型&#xff0c;比如PointXYZ、PointXYZI、PointXYZRGBA等等&#xff0c;每一个都可以看做是点云的一个点的数据。而整个点云的数据类型被定义为PointCloud。 以pcl::P…...

LeetCode 面试题 03.01. 三合一

文章目录 一、题目二、C# 题解 一、题目 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标&#xff0c;value表示压入的值。 构造函数会传入一个stackSize参数&#x…...

【WebSocketIndexedDB】node+WebSocketIndexedDB开发简易聊天室

序幕介绍&#xff1a; WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 讲人话就是说&#xff1a;WebSocket 使得客户端和服务器之间的数据交换变得更加简单&#xff0c;在 WebSocket API 中&#xff0c;浏览器和服务器只需要完成一次握手&#x…...

【01】弄懂共识机制PoW

基于工作量证明机制的共识机制PoW&#xff08;Proof of Work&#xff09; 特点就是多劳多特 共识过程 一个区块链系统中&#xff0c;交易历经多个步骤才能得以上链&#xff0c;并且需要经过多个节点的验证。以下是这些步骤的详细叙述&#xff1a; 交易进入交易池&#xff08;内…...

QT C++ 基于TCP通信的网络聊天室

一、基本原理及流程 1&#xff09;知识回顾&#xff08;C语言中的TCP流程&#xff09; 2&#xff09;QT中的服务器端/客户端的操作流程 二、代码实现 1&#xff09;服务器 .ui .pro 在pro文件中添加network库 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>…...

SpringMVC入门详细介绍

一. SpringMVC简介 Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;通过把Model&#xff0c;View&#xff0c;Controller分离&#xff0c;将web层进行职责解耦&#xff0c;把复杂的web应用分成逻辑清晰的几部分&#xff0c;简化开发&a…...

Hyper-V DDA图形工具:告别PowerShell命令行的设备直通新时代

Hyper-V DDA图形工具&#xff1a;告别PowerShell命令行的设备直通新时代 【免费下载链接】DDA 实现Hyper-V离散设备分配功能的图形界面工具。A GUI Tool For Hyper-Vs Discrete Device Assignment(DDA). 项目地址: https://gitcode.com/gh_mirrors/dd/DDA 还在为Hyper-…...

3步搞定Linux启动盘:Deepin Boot Maker完全使用指南

3步搞定Linux启动盘&#xff1a;Deepin Boot Maker完全使用指南 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 在Linux系统安装和维护过程中&#xff0c;启动盘制作是一个看似简单却充满挑战的环节。传统命令行工…...

告别Vivado卡顿!用VCS2018+Verdi独立仿真Xilinx IP核的保姆级流程(附Makefile模板)

高效FPGA仿真实践&#xff1a;VCS与Verdi协同验证Xilinx IP核全流程指南 在FPGA开发过程中&#xff0c;仿真验证环节往往占据整个项目周期的60%以上时间。传统Vivado集成环境虽然提供了一站式解决方案&#xff0c;但随着设计规模扩大&#xff0c;其启动缓慢、资源占用高的问题…...

Taotoken的Token Plan套餐如何帮助个人开发者更可控地规划AI支出

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken的Token Plan套餐如何帮助个人开发者更可控地规划AI支出 对于个人开发者或小型项目团队而言&#xff0c;大模型API的调用成…...

Fast-GitHub:打破GitHub访问壁垒的智能加速方案

Fast-GitHub&#xff1a;打破GitHub访问壁垒的智能加速方案 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 你是否曾因GitHub仓库克…...

Seraphine:英雄联盟智能BP助手与战绩查询工具完整指南

Seraphine&#xff1a;英雄联盟智能BP助手与战绩查询工具完整指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 在英雄联盟的对局中&#xff0c;BP&#xff08;禁选英雄&#xff09;阶段往往是决定胜负的关…...

Go语言AI编程助手SDK:提升Cursor代码理解与生成精准度

1. 项目概述&#xff1a;一个为AI编程而生的Go语言SDK如果你是一名Go语言开发者&#xff0c;同时又在深度使用Cursor这样的AI辅助编程工具&#xff0c;那么你很可能已经感受到了一个痛点&#xff1a;如何让AI更精准、更高效地理解你的代码库&#xff0c;并在此基础上进行智能操…...

OpenClaw 小龙虾智能体联动 DeepSeek 大模型部署实操攻略

前置准备 获取小龙虾open claw一键安装包&#xff08;www.totom.top&#xff09;并安装电脑端已成功安装并正常启动OpenClaw&#xff0c;右上角 Gateway 状态显示在线设备网络通畅&#xff0c;可正常访问 DeepSeek 开放平台拥有可接收验证码的手机号 / 微信&#xff0c;用于平…...

工作流编排核心原理与实践:从概念到MiniFlow系统实现

1. 项目概述&#xff1a;从代码仓库到工作流编排的实践最近在梳理团队内部的一些自动化流程&#xff0c;发现很多脚本和任务散落在各个角落&#xff0c;执行依赖混乱&#xff0c;出了问题排查起来像大海捞针。正好看到GitHub上有个叫dnh33/workflow-orchestration的项目&#x…...

Navis:开源项目标准化开发环境与工具链配置框架实践

1. 项目概述&#xff1a;一个为开发者打造的“导航星图”如果你和我一样&#xff0c;常年混迹在开源项目的海洋里&#xff0c;那么你一定对这种感觉不陌生&#xff1a;面对一个全新的、功能强大的开源工具&#xff0c;兴奋地克隆了仓库&#xff0c;然后……就卡在了第一步。REA…...