nginx使用详解

news2024/11/20 16:28:24

文章目录

  • 一、前言
  • 二、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非常强大和灵活,可以根据具体需求配置各种复杂的规则和行为。

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

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

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

相关文章

【JVM】垃圾收集算法

文章目录 分代收集理论标记-清除算法标记-复制算法标记-整理算法 分代收集理论 当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(Generational Collection)[1]的理论进 行设计,分代收集名为理论,实质是一套符…

C#循环定时上传数据,失败重传解决方案,数据库标识

有些时候我们需要定时的上传一些数据库的数据,在数据不完整的情况下可能上传失败,上传失败后我们需要定时在重新上传失败的数据,该怎么合理的制定解决方案呢?下面一起看一下: 当然本篇文章只是提供一个思路&#xff0…

windows系统bat脚本调用powershell脚本

前言 项目上有些项目既使用了bat脚本,又使用了powershell脚本; 需要两种脚本配合使用; bat调用powershell 不隐藏窗口运行 bat脚本代码:执行当前路径下的1.ps1脚本文件 start powershell .\1.ps1pause powershell脚本代码&…

025: vue父子组件中传递方法控制:$emit,$refs,$parent,$children

第025个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

prometheus通过blackbox-exporter监控web站点证书

1 概述 线上站点普遍是https,因此监控https web站点的证书的过期时间,是一个基础性需求。例如,证书过期会导致tls握手失败,进而导致用户无法正常访问web站点。 blackbox-expoter是一个web服务,它暴露了一个接口&#…

如何在面试中处理竞争与压力

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

WebSocket与SSE区别

一,websocket WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议) 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的 Websocket是一个持久化的协议 websocket的原理 …

算法笔记:二叉树

1 基本二叉树 二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为“左子节点”和“右子节点”。 二叉树的根是唯一没有父节点的节点,而所有其他节点都有一个父节点和零个或两个子节点。 1.1 基础术语 节点(Node&…

服务运营 | MSOR文章精选:远程医疗服务中的统计与运筹(二)

作者信息:王畅,陈盈鑫 编者按 在上一期中,我们分享了与远程医疗中运营管理问题相关的两篇文章。其一发表在《Stochastic Systems》,旨在使用排队论与流体近似的方法解决远程医疗中资源配置的问题;其二发表在《Managem…

R_I相关指令函数(SMART PLC梯形图代码)

大部分小型PLC可能并没有R_I(浮点数转单字)指令,这篇博客我们介绍简单实用的一些转换FC,这些FC其实并不复杂,但是可以大大简化我们的代码量,使代码阅读起来更简介明了。SMART PLC的ABS()指令请查看下面文章链接: PLC绝对值指令AB…

04 Linux补充|C/C++

目录 Linux补充 C语⾔ C语言中puts和printf的区别? Linux补充 (1)ubuntu安装ssh服务端openssh-server命令: ubuntu安装后默认只有ssh客户端,只能去连其它ssh服务器;其它客户端想要连接这个ubuntu系统,需要安装部署…

LLM大模型推理加速 vLLM

参考: https://github.com/vllm-project/vllm https://zhuanlan.zhihu.com/p/645732302 https://vllm.readthedocs.io/en/latest/getting_started/quickstart.html ##文档 加速原理: PagedAttention,主要是利用kv缓存 使用: #…

JVM | Java执行引擎结构及工作原理

引言 Java虚拟机(JVM)和其复杂性 在我们先前探讨的文章中,我们已经深入到了Java虚拟机(JVM)的内部,透视了其如何通过元空间存储类的元数据和字节码。JVM的设计初衷是为了实现跨平台兼容性,但随…

JavaScript构造函数

1、构造函数: 是一个函数,是通过new运算符进行调用,生成一个特殊的对象并返回。 function 函数名([参数]){ this.属性名 ‘属性值’ ... this.属性名 function([参数]){ 函数体语句 } } 通常情况下,建议构造函数的首字母大写 …

如何修复损坏的MP4视频文件?

随着智能设备拍摄功能的不断强大,随拍摄成本逐渐降低,越来越多的人喜欢用视频记录我们的生活,并上传抖音、快手、B站等视频网站 但在拍摄视频时也可能遇到一些突发情况,如手机没电断电终止拍摄、视频文件传输中断等,拍…

【Semidrive】解决 X9HP reboot 导致 Android 崩溃的问题

本篇文章介绍如何解决 X9HP 平台的 AP1 域中插着 u 盘时运行 reboot 导致 Android 系统崩溃的问题,软件版本是 X9 PTG4.0,硬件环境是 X9H 开发板 X9H_REF_A04。一、问题原因 在调试过程中遇到插着 u 盘时用 adb shell reboot 命令或直接在串口中 reboot …

国际网页短信软件平台通道搭建与后台定制-移讯云短信系统

国际网页短信软件平台通道搭建与后台定制-移讯云短信系统 这里先介绍下客户的定制需求,稍候放出开发构架和开发思路 我们根据市场需要,开发了一套可以接入国际通道的短信系统。 支持地区通道分流,支持关键字,关键词通道分流&…

ELK框架Logstash配合Filebeats和kafka使用

ELK框架Logstash配合Filebeats和kafka使用 本文目录 ELK框架Logstash配合Filebeats和kafka使用配置文件结构input为标准输入,output为标准输出input为log文件output为标准输出output为es input为tcpspringboot配置logstash配置 input为filebeatsfilebeats配置logsta…

【脑机接口】通过任务判别成分分析提高单独校准的 SSVEPBCI 的性能

题目:Improving the Performance of Individually Calibrated SSVEP-BCI by Task Discriminant Component Analysis **1. 摘要****2. 方法***A.任务相关成分分析**B.任务判别成分分析**C.评估* **- 结果****- 结论** 1. 摘要 脑机接口(BCI)为…

Python异步请求处理框架

在互联网时代,我们的程序需要处理大量的网络请求。为了提高性能和用户体验,我们需要一个高效的异步请求处理框架。本文将引导您从头开始编写一个Python框架,实现异步请求及响应管理。 设计思路与关键技术点 a. 异步编程的基本概念 异步编程…