探究Nginx应用场景

news2024/12/22 20:59:57

1 静态资源

Nginx是一个流行的Web服务器和反向代理服务器,它可以用于托管静态资源。下面是一个简单的案例,展示了如何使用Nginx来提供静态资源。

假设你有一个名为example.com的域名,并且你希望使用Nginx来托管位于/var/www/html目录下的静态资源。

  1. 配置静态资源路径:在Nginx中,可以使用root指令来指定静态资源的根目录。打开Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,并添加以下配置:
server {  
    listen 80;  
    server_name example.com;  
  
    location / {  
        root /var/www/html;  
        index index.html index.htm;  
    }  
}
  1. 在上面的配置中,server_name指令指定了域名,location /指令指定了URL路径匹配规则,root指令指定了静态资源的根目录。
  2. 重启Nginx:保存并关闭配置文件后,重启Nginx以使更改生效。使用以下命令重启Nginx:
  3. 上传静态资源:将你的静态资源文件放置在/var/www/html目录中。例如,你可以创建一个名为index.html的文件,并将其放在该目录下。
  4. 访问静态资源:现在,你可以通过在浏览器中访问http://example.com来访问你的静态资源。如果一切正常,你应该能够看到你在/var/www/html目录中放置的静态资源。

这是一个简单的使用Nginx提供静态资源的案例。你可以根据需要进行更多的配置,例如添加SSL证书、压缩资源、缓存控制等。请参考Nginx的官方文档以获取更多详细信息。

2 反向代理

Nginx是一个流行的Web服务器和反向代理服务器,它可以用于构建高性能的Web应用程序。下面是一个简单的案例,展示了如何使用Nginx作为反向代理服务器。

假设你有一个名为backend的应用程序服务器,它监听在端口8080上,并且你希望使用Nginx作为反向代理来转发客户端请求到该服务器。

  1. 配置反向代理:在Nginx中,可以使用proxy_pass指令来指定反向代理的目标服务器。打开Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,并添加以下配置:
    在这里插入图片描述
    在上面的配置中,server_name指令指定了域名,location /指令指定了URL路径匹配规则,proxy_pass指令指定了反向代理的目标服务器地址。proxy_set_header指令用于设置请求头信息,以便后端服务器能够正确识别客户端的请求。

  2. 重启Nginx:保存并关闭配置文件后,重启Nginx以使更改生效。

  3. 配置后端服务器:将你的应用程序服务器配置为监听在端口8080上。例如,如果你使用的是Node.js应用程序,你可以使用以下代码创建一个简单的服务器:
    在这里插入图片描述

  4. 访问应用程序:现在,你可以通过在浏览器中访问http://example.com来访问你的应用程序。如果一切正常,你应该能够看到来自后端服务器的响应。

这是一个简单的使用Nginx作为反向代理的案例。你可以根据需要进行更多的配置,例如添加SSL证书、负载均衡、缓存控制等。请参考Nginx的官方文档以获取更多详细信息。

3 动静分离

Nginx是一个流行的Web服务器和反向代理服务器,它可以用于实现动静分离,提高Web应用程序的性能。下面是一个简单的案例,展示了如何使用Nginx实现动静分离。

假设你有一个静态资源目录/var/www/html,该目录下存放着一些HTML、CSS、JavaScript等静态文件,并且你希望使用Nginx来处理这些静态文件的请求,同时将动态请求转发给后端的应用程序服务器。

  1. 配置动静分离:在Nginx中,可以使用location指令来匹配不同的URL路径,并指定相应的处理方式。打开Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,并添加以下配置:
    在这里插入图片描述
    在上面的配置中,server_name指令指定了域名,location /指令指定了URL路径匹配规则,root指令指定了静态资源的根目录。location /api指令匹配以/api开头的URL路径,并将请求转发给本地端口8080上的应用程序服务器。proxy_pass指令指定了反向代理的目标服务器地址。proxy_set_header指令用于设置请求头信息,以便后端服务器能够正确识别客户端的请求。
  2. 重启Nginx:保存并关闭配置文件后,重启Nginx以使更改生效。
  3. 配置后端服务器:将你的应用程序服务器配置为监听在端口8080上。例如,如果你使用的是Node.js应用程序,你可以使用以下代码创建一个简单的服务器:
    在这里插入图片描述
  4. 访问应用程序:现在,你可以通过在浏览器中访问http://example.com来访问你的应用程序。如果一切正常,你应该能够看到来自静态资源目录的HTML文件,并且当你访问以/api开头的URL路径时,请求将被转发到后端的应用程序服务器。

这是一个简单的使用Nginx实现动静分离的案例。你可以根据需要进行更多的配置,例如添加SSL证书、负载均衡、缓存控制等。请参考Nginx的官方文档以获取更多详细信息。

4 一个nginx机器、一个服务器集群的配置案例

以下是一个使用Nginx作为反向代理服务器的集群配置案例:

案例概述:

  • 一个Nginx机器作为反向代理服务器,负责接收客户端请求并转发到后端服务器集群。
  • 一个服务器集群,包含多个应用服务器,提供实际的业务处理能力。

配置步骤:

1、配置Nginx机器:

  • 安装Nginx:在Nginx机器上安装Nginx软件。
  • 配置反向代理:编辑Nginx的配置文件(通常是nginx.conf),添加反向代理配置。示例配置如下:
http {  
    upstream backend {  
        server backend1.example.com;  
        server backend2.example.com;  
        server backend3.example.com;  
    }  
  
    server {  
        listen 80;  
        server_name example.com;  
  
        location / {  
            proxy_pass http://backend;  
            proxy_set_header Host $host;  
            proxy_set_header X-Real-IP $remote_addr;  
        }  
    }  
}

在上面的配置中,upstream块定义了一个名为backend的上游服务器组,其中列出了后端服务器的地址。server块定义了Nginx监听的端口和域名,location块指定了将请求代理到哪个上游服务器组。

  • 保存配置文件并重启Nginx:保存配置文件后,重启Nginx服务以使更改生效。
  1. 配置服务器集群:
  • 安装应用服务器软件:在每个应用服务器上安装所需的业务处理软件。
  • 配置业务处理:根据具体的业务需求,配置应用服务器的业务处理能力。
  • 配置网络:确保应用服务器可以被Nginx机器正确访问,并且没有网络故障。

完成上述配置后,客户端发送请求到example.com时,Nginx机器会将请求转发到后端服务器集群中的某个应用服务器进行处理,并将响应返回给客户端。通过Nginx的反向代理功能,可以实现负载均衡、故障转移等功能,提高系统的可用性和性能。

5 Nginx负载均衡策略-指定轮询几率

在Nginx中,可以使用weight参数来指定轮询几率。weight参数用于定义每个后端服务器的权重,权重越高的服务器将会收到更多的请求。下面是一个指定轮询几率的案例:

http {  
  upstream backend {  
    server backend1.example.com weight=2;  
    server backend2.example.com weight=3;  
    server backend3.example.com weight=5;  
  }  
  
  server {  
    listen 80;  
    server_name example.com;  
  
    location / {  
      proxy_pass http://backend;  
      proxy_set_header Host $host;  
      proxy_set_header X-Real-IP $remote_addr;  
    }  
  }  
}

在上面的配置中,我们定义了一个名为backend的上游服务器组,其中包含了三个后端服务器,并分别指定了它们的权重。backend1.example.com的权重为2,backend2.example.com的权重为3,backend3.example.com的权重为5。

当Nginx接收到请求时,它会根据权重值的大小进行轮询。在这个例子中,backend3.example.com的权重最高,因此它将收到最多的请求,其次是backend2.example.com,最后是backend1.example.com。

通过这种方式,您可以根据服务器的性能、负载或其他因素来调整每个服务器的轮询几率,从而实现更灵活的负载均衡策略。

6 Nginx负载均衡策略-ip_hash

在Nginx中,可以使用ip_hash指令来实现基于客户端IP地址的哈希负载均衡。ip_hash指令将根据客户端的IP地址将请求哈希到不同的后端服务器。下面是一个ip_hash负载均衡策略的案例:

http {  
  upstream backend {  
    ip_hash;  
    server backend1.example.com;  
    server backend2.example.com;  
    server backend3.example.com;  
  }  
  
  server {  
    listen 80;  
    server_name example.com;  
  
    location / {  
      proxy_pass http://backend;  
      proxy_set_header Host $host;  
      proxy_set_header X-Real-IP $remote_addr;  
    }  
  }  
}

在上面的配置中,我们定义了一个名为backend的上游服务器组,并在该组中应用了ip_hash指令。这意味着Nginx将使用客户端的IP地址作为哈希键,将请求分配到不同的后端服务器。

使用ip_hash负载均衡策略可以确保来自同一客户端的请求始终被发送到同一台后端服务器,这对于保持会话状态或避免重复登录非常有用。然而,需要注意的是,ip_hash指令仅根据客户端的IP地址进行哈希,如果客户端使用代理服务器,则可能导致负载分配不均。

每个请求按访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其它服务器。

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

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

相关文章

自定义权限指令与防止连点指令

1.权限指令 // 注册一个全局自定义权限指令 v-permission Vue.directive(permission, {inserted: function(el, binding, vnode) {const {value} binding; // 指令传的值// user:edit:phone,sysData:sampleconst permissions [user:edit:address, sysData:entrust, sysData:…

WebStorm使用Element组件库

文章目录 WebStorm使用Element组件库1. webstorm使用vue文件2. 首先需要安装Element Plus2. 项目完成引入-以日历为例 WebStorm使用Element组件库 1. webstorm使用vue文件 在Test.vue文件中书写模板,并暴露对外接口 <script> export default {name: "Test" }…

第1章_freeRTOS入门与工程实践之课程介绍

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id724601559592 配套资料获取&#xff1a;https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

VS Code 安装方法

1.安装控制台程序.NET SDK 功能&#xff1a;应用能够正常的运行和构建。 .NET SDK下载地址&#xff1a;下载 .NET(Linux、macOS 和 Windows) 2.安装驱动编辑器vscode vscode下载地址&#xff1a;https://code.visualstudio.com/Download 选择System Installer&#xff0c;…

数据在内存中的存储——练习5

题目&#xff1a; 5.1 #include <stdio.h> unsigned char i 0; int main() {for(i 0;i<255;i){printf("hello world\n");}return 0; }5.2 #include <stdio.h> int main() {unsigned int i;for(i 9; i > 0; i--){printf("%u\n",i);}r…

MCU软核 2. Xilinx Artix7上运行tinyriscv

0. 环境 - ubuntu18 - win10 vivado 2018.3 - git desktop - XC7A35TV12核心板 - ft2232hl小板&#xff08;用于程序烧录&#xff09; 1. git克隆源码 Git Desktop -> File -> Clone repository -> -> URL: https://gitee.com/liangkangnan/tinyriscv/ -> Lo…

Vue3样式绑定

文章目录 Vue3样式绑定1. class 属性绑定1.1 v-bind:class 设置一个对象&#xff0c;从而动态的切换 class1.2 在对象中传入更多属性用来动态切换多个 class1.3 直接绑定数据里的一个对象1.4 绑定一个返回对象的计算属性。这是一个常用且强大的模式1. 5 数据语法1.6 errorClass…

Mental Poker- Part 2

在part-1中&#xff0c;我们梳理了去中心纸牌游戏所面临的挑战&#xff0c;也介绍了一种改进的Barnett-Smart协议&#xff0c;part-2将深入了解该协议背后涉及的算法。 Discrete-log VTMF VTMFs包含4部分&#xff1a;key generation, mask, remask and unmask&#xff0c;这些…

2024年java面试--mysql(4)

系列文章目录 2024年java面试&#xff08;一&#xff09;–spring篇2024年java面试&#xff08;二&#xff09;–spring篇2024年java面试&#xff08;三&#xff09;–spring篇2024年java面试&#xff08;四&#xff09;–spring篇2024年java面试–集合篇2024年java面试–redi…

Matlab 2016安装MinGW-w64-4.9.2

Matlab 2016安装MinGW-w64-4.9.2 项目需求&#xff1a;需要将matlab中的.m文件编译为cpp文件 .dll .h .lib。 我相信大家在对matlab2016安装MinGW-w64出现了各种各样的问题。如&#xff1a;4.9.2安装失败&#xff1b;安装了其他版本但是matlab检测不到&#xff0c;或者其他各种…

stable diffusion安装及使用

最近在看这个&#xff0c;踩了一些坑&#xff0c;现在有点头绪了&#xff0c;记录如下 安装很简单&#xff0c;直接git下载下来&#xff0c;然后进到根目录执行./web-ui.py,第一次启动你没有模型他会帮你下载个默认模型&#xff0c;我有模型了&#xff0c;就先把这个模型放到*/…

【Python】从入门到上头— 使用re模块用于快速实现正则表达式需求(11)

正则表达式语法规则 详见 【Java基础】正则表达式应用 re模块 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则&#xff0c;凡是符合规则的字符串&#xff0c;我们就认为它“匹配”了&#xff0c;否则&#xff0c;…

服务器上一个域名对应多个前端项目的nginx转发配置

场景&#xff1a; 当有两个前端项目A,B的时候&#xff0c;项目A&#xff08;对应端口8000&#xff09;和项目B&#xff08;对应端口8001&#xff09;分别部署在服务器的不同位置&#xff0c;通过服务器ip端口都能正常访问单独的项目A和项目B&#xff1b;现在要求两个项目共用一…

工作中有许多比较常用的SQL脚本

工作中有许多比较常用的SQL脚本&#xff0c;今天开始分几章分享给大家。 1、行转列的用法PIVOTCREATE table test (id int,name nvarchar(20),quarter int,number int) insert into test values(1,N苹果,1,1000) insert into test values(1,N苹果,2,2000) insert into test va…

整理一下5个全国化的股票十倍杠杆正规平台(2023最大十倍杠杆炒股平台)

在全国范围内&#xff0c;有诸多优秀的杠杆平台可供选择。本文将介绍5个全国化的股票十倍杠杆正规平台&#xff1a;红腾网、广瑞网、一鼎盈、广盛网、富灯网。 1. 红腾网 红腾网是国内的一家知名杠杆交易平台&#xff0c;平台以高效、便捷、安全的特点著称。 2. 广瑞网 广瑞…

拿走吧你,Fiddler模拟请求发送和修改响应数据

模拟伪造请求 方法一&#xff1a;打断点模拟HTTP请求 1、浏览器页面填好内容后&#xff08;不要操作提交&#xff09;&#xff0c;打开fiddler&#xff0c;设置请求前断点&#xff0c;点击菜单fiddler,”Rules”\”Automatic Breakpoints”\”Before Requests” 2、在页面上点…

数字孪生的实用性为何遭受质疑?这篇文章为你解答

数字孪生技术的实用性体现在哪&#xff1f;数字孪生技术不仅是当今科技领域的热点&#xff0c;也是各行各业不断探索和应用的新兴领域。这项技术的实用性在于它的多领域适用性和巨大潜力。然而&#xff0c;目前有许多声音认为数字孪生技术是一项“没用”的技术&#xff0c;仅仅…

扑克牌QB/T 2228标准

QB/T 2228-2013扑克牌 本标准规定了扑克牌的术语和定义、分类及组成、要求、试验方法、检验规则和标志、包装、运输、贮存。 本标准适用于纸质扑克牌。 规范性引用文件 下列文件对于本文件的应用是必不可少的.凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期…

抖音生活服务“整编”,一场消费与产业的生态共赢

团券、到店、核销&#xff0c;这已经成为当代年轻人出去吃饭、理发等的日常&#xff0c;如同上网买衣服、买手机一样。这样的消费日常背后&#xff0c;稳定已久的生活服务行业再次硝烟弥漫。搅动一池春水的&#xff0c;是抖音等互联网后来者。 根据媒体报道&#xff0c;抖音生…

市场开始复苏,三星传调涨内存芯片高达20% | 百能云芯

随着行动内存芯片市场迹象显示出复苏迹象&#xff0c;并且最早在第四季度供不应求&#xff0c;三星电子已宣布将提高动态随机存取存储器&#xff08;DRAM&#xff09;和NAND闪存芯片的价格&#xff0c;幅度达到10%~20%。 韩国经济日报报道&#xff0c;知情人士透露&#xff0c;…