返回顶部
首页 > 资讯 > 服务器 >Nginx中的主要应用场景解读
  • 242
分享到

Nginx中的主要应用场景解读

Nginx主要应用场景Nginx应用场景Nginx场景 2023-05-18 08:05:21 242人浏览 独家记忆
摘要

目录Nginx的主要应用场景静态网站部署负载均衡Nginx的使用场景及示例1.静态资源服务器2.反向代理3.负载均衡器4.缓存服务器5.反向代理服务器6.websocket服务器总结

Nginx的主要应用场景

静态网站部署

nginx是一个HttpWEB服务器,可以将服务器上的静态文件(htmlCSS、图片)通过HTTP协议返回给浏览器客户端。

举例:我们在服务器上部署一个静态资源index.html

将index.html上传至linux /opt/www/test

修改nginx.conf 增加一个location,拦截/test的请求,root 对应的/opt/www路径代表根路径,也就是/test前面的/斜杠

location /test {
            root   /opt/www;
            index  index.html;
        }

启动nginx或者重新加载nginx

我们访问下:http://192.168.253.130/test/ 

负载均衡

负载均衡可以分为硬件负载均衡和软件负载均衡

硬件负载均衡,比如F5、深信服、Array等,优点是有厂商专业团队支持,性能稳定;缺点是价格昂贵

软件负载均衡,比如Nginx、LVS、HAProxy等,优点是免费开源,成本低廉

轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

http {
    upstream test{
    ##后端实际服务器 nginx在轮询访问以下几台服务器
        server 10.100.30.1:8080;
        server 10.100.30.2:8080;
        server 10.100.30.3:8080;
        server 10.100.30.4:8080;
    }
    server {
    ##前端拦截入口
        listen 80;
        server_name www.test.com;
        location / { 
            proxy_pass http://test;
        }
    }
}

加权轮询法:不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。

给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。

http {
    upstream test{
    ##后端实际服务器 nginx在轮询访问以下几台服务器
        server 10.100.30.1:8080 weight=1;
        server 10.100.30.2:8080 weight=3;
        server 10.100.30.3:8080 weight=1;
        server 10.100.30.4:8080 weight=1;
    }
    server {
    ##前端拦截入口
        listen 80;
        server_name www.test.com;
        location / { 
            proxy_pass http://test;
        }
    }
}

源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。

采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

upstream test{
        ip_hash;
        server 10.100.30.1:8080 weight=1;
        server 10.100.30.2:8080 weight=3;
        server 10.100.30.3:8080 weight=1;
        server 10.100.30.4:8080 weight=1;
    }

最小连接数法:由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。

upstream test{
        least_conn;
        server 10.100.30.1:8080;
        server 10.100.30.2:8080;
        server 10.100.30.3:8080;
        server 10.100.30.4:8080;
    }

down:表示停掉某台服务

upstream test{
        server 10.100.30.1:8080 down;
        server 10.100.30.2:8080;
        server 10.100.30.3:8080;
        server 10.100.30.4:8080;
    }

backup:指定备用服务器,正常情况下只要有其他服务器能正常访问,备用服务器不会被访问到,只有其他服务器都挂掉的时候,才会使用备用服务器,所以采用这种方式一般用来实现热部署,先把代码更新到备用服务器上,然后停掉正常服务器,正常服务器部署完成后,备用服务器又处于等待状态,整个部署过程使用户能够感受不到停机。

upstream test{
        server 10.100.30.1:8080 backup;
        server 10.100.30.2:8080 backup;
        server 10.100.30.3:8080;
        server 10.100.30.4:8080;
    }
  • 静态代理
  • 动静分离
  • 虚拟主机

Nginx的使用场景及示例

Nginx是一款高性能、高并发的HTTP服务器和反向代理服务器,可用于静态资源服务器、负载均衡器、反向代理、缓存服务器、Web服务器等多种场景。

下面列举几个使用场景和示例:

1.静态资源服务器

在使用Nginx作为静态资源服务器时,Nginx会直接返回请求的文件,从而减轻Web服务器的负担。这种场景通常用于提供静态文件下载或者视频等大文件的访问。

下面是一个示例Nginx配置:

server {
    listen       80;
    server_name  example.com;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    location /images/ {
        alias /var/www/images/;
    }
    location /downloads/ {
        alias /var/www/downloads/;
    }
}

上述配置中,Nginx会将访问根目录(/)的请求映射到/usr/share/nginx/html目录下,如果请求的是/images/目录下的文件,Nginx则会映射到/var/www/images/目录下,如果请求的是/downloads/目录下的文件,Nginx则会映射到/var/www/downloads/目录下。

2.反向代理

在使用Nginx作为反向代理服务器时,Nginx会将请求转发给Web服务器进行处理,然后将处理结果返回给客户端。

这种场景通常用于实现负载均衡、提高Web服务器的安全性、隐藏Web服务器的真实IP等。

下面是一个示例Nginx配置:

upstream backend {
    server backend1.example.com:8080 weight=3;
    server backend2.example.com:8080;
}
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;
    }
}

上述配置中,Nginx会将访问根目录(/)的请求转发给后端的Web服务器(backend1.example.com和backend2.example.com),其中backend1.example.com的权重为3,backend2.example.com的权重为1,表示backend1.example.com的处理能力更强。

在转发请求时,Nginx还会设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏Web服务器的真实IP。

3.负载均衡器

在使用Nginx作为负载均衡器时,Nginx会将请求均衡地分发到多个Web服务器上,从而实现高并发高可用的服务。这种场景通常用于Web应用程序的集群部署、分布式系统的部署等。下面是一个示例Nginx配置:

upstream backend {
    server backend1.example.com:8080;
    server backend2.example.com:8080;
    server backend3.example.com:8080;
}
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;
    }
}

上述配置中,Nginx会将请求均衡地分发到三个Web服务器(backend1.example.com、backend2.example.com和backend3.example.com)上,从而实现负载均衡。

在转发请求时,Nginx还会设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏Web服务器的真实IP。

4.缓存服务器

在使用Nginx作为缓存服务器时,Nginx会缓存Web服务器返回的响应,从而减少对Web服务器的请求。这种场景通常用于提高Web应用程序的性能、降低Web服务器的负载等。下面是一个示例Nginx配置:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
listen 80;
server_name example.com;
    location / {
        proxy_cache my_cache;
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

上述配置中,Nginx会将Web服务器返回的响应缓存到/var/cache/nginx/my_cache目录下,并设置缓存有效期为60分钟。在缓存命中时,Nginx会直接返回缓存的响应,从而减少对Web服务器的请求。

总之,Nginx具有很强的可扩展性和灵活性,可以根据不同的需求配置不同的使用场景。以上仅是一些示例,实际应用中还有很多其他的使用场景。

5.反向代理服务器

在使用Nginx作为反向代理服务器时,Nginx会将客户端请求转发到后端的Web服务器上,并将后端服务器返回的响应转发给客户端。这种场景通常用于隐藏后端服务器的真实IP、提高Web应用程序的可用性等。下面是一个示例Nginx配置:

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;
    }
}

上述配置中,Nginx会将客户端请求转发到http://backend上,并设置HTTP头信息中的Host和X-Real-IP字段,从而隐藏后端服务器的真实IP。

6.WebSocket服务器

在使用Nginx作为WebSocket服务器时,Nginx会将客户端请求转发到后端的WebSocket服务器上,并实现WebSocket协议的连接管理。这种场景通常用于实时通信、游戏等应用程序。

下面是一个示例Nginx配置:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

上述配置中,Nginx会将WebSocket请求转发到http://backend上,并设置HTTP头信息中的Upgrade、Connection、Host和X-Real-IP字段,从而实现WebSocket协议的连接管理。

总之,Nginx具有很多的使用场景,可以根据不同的需求配置不同的服务器功能。以上仅是一些示例,实际应用中还有很多其他的使用场景。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Nginx中的主要应用场景解读

本文链接: https://lsjlt.com/news/211902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Nginx中的主要应用场景解读
    目录Nginx的主要应用场景静态网站部署负载均衡Nginx的使用场景及示例1.静态资源服务器2.反向代理3.负载均衡器4.缓存服务器5.反向代理服务器6.WebSocket服务器总结...
    99+
    2023-05-18
    Nginx主要应用场景 Nginx应用场景 Nginx场景
  • Nginx的主要应用场景有哪些
    这篇文章主要讲解了“Nginx的主要应用场景有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nginx的主要应用场景有哪些”吧!Nginx能做什么反向代理 负载均衡 ...
    99+
    2023-06-27
  • redis的主要应用场景有哪些
    redis的主要应用场景有哪些?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的...
    99+
    2024-04-02
  • Java中的接口及其应用场景解读
    目录一、接口的特点二、定义接口1.interface关键字2.implements关键字三、应用场景1.接口表示规范2.接口表示能力/行为四、接口和类之间的关系五、接口的命名规范总结...
    99+
    2023-05-19
    Java的接口 Java应用场景 Java接口解读
  • MyISAM和InnoDB的主要区别和应用场景
    主要区别: 1).MyISAM是非事务安全型的,而InnoDB是事务安全型的。 2).MyISAM锁的粒度是表级,而InnoDB支持行级锁定。 3).MyISAM支持全文类...
    99+
    2024-04-02
  • Couchbase的主要用例和应用场景有哪些
    缓存:Couchbase可以作为内存缓存,提高数据的读取速度,减少对数据库的访问压力。 实时数据分析:Couchbase支持...
    99+
    2024-04-09
    Couchbase
  • Vue常用的修饰符及应用场景解读
    目录vue常用的修饰符修饰符的作用表单的修饰符事件修饰符鼠标按钮修饰符键盘修饰符v-bind修饰符应用场景vue常用的修饰符 表单修饰符事件修饰符鼠标按键修饰符键值修饰符v-bind...
    99+
    2022-11-13
    Vue常用修饰符 Vue修饰符 Vue修饰符应用场景
  • vue中filter的应用场景详解
    filter一般用于过滤某些值,比如我这个字段是空,可是我想在前端显示“–”,就可以使用到它了。 最近碰到一个需求就是要给某些字段可以设置权限去以其他形式显示,比如以“***”显示...
    99+
    2024-04-02
  • 解析 PHP 中点操作符的重要性和应用场景
    标题:PHP 中点操作符的重要性和应用场景解析 在PHP中,点操作符(.)是连接两个字符串的运算符,也称为字符串连接符。尽管在一些编程语言中,使用加号(+)来连接字符串更为常见,但在P...
    99+
    2024-04-02
  • MySQL.proc表在MySQL中的重要性和应用场景
    MySQL.proc表在MySQL中的重要性和应用场景 MySQL.proc表是MySQL数据库中非常重要的一个系统表,它用于存储存储过程、函数以及触发器的定义信息。该表记录了所有数据...
    99+
    2024-04-02
  • MySQL.proc表在MySQL中的重要性和应用场景
    MySQL.proc表在MySQL中的重要性和应用场景 MySQL.proc表是MySQL数据库中非常重要的一个系统表,它用于存储存储过程、函数以及触发器的定义信息。该表记录了所有数据...
    99+
    2024-04-02
  • Java读写锁ReadWriteLock原理与应用场景详解
    Java并发编程提供了读写锁,主要用于读多写少的场景 什么是读写锁? 读写锁并不是JAVA所特有的读写锁(Readers-Writer Lock)顾名思义是一把锁分为两部分:读锁和写...
    99+
    2023-02-18
    Java读写锁ReadWriteLock原理 Java读写锁应用场景 Java读写锁的特点 读写状态的设计 写锁的获取与释放 锁降级
  • Mysql中mvcc各场景理解应用
    目录前言场景一试验步骤事务A第一步事务B执行事务A执行第二步结果场景二试验步骤事务A第一步事务B执行事务A执行第二步结果事务A后续步骤场景三场景四事务A第一步事务B执行事务A第二步事...
    99+
    2022-11-13
    Mysql mvcc场景 Mysql mvcc
  • WebSocket在Web应用中的应用场景
    WebSocket是一种在现代Web浏览器和服务器之间进行双向通信的协议。与传统的HTTP协议不同,WebSocket允许服务器主动发送数据到客户端,而不需要客户端主动发起请求。这种实时双向通信的特性使得WebSocket在多种Web应用场...
    99+
    2023-10-21
    实时通信 数据推送 多人协作
  • redis的应用场景
    这篇文章主要探讨了redis的应用场景,具有一定借鉴价值,需要的朋友可以参考下。如下资料是关于redis的应用场景内容。一:缓存——热数据热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用...
    99+
    2024-04-02
  • Android中FileProvider的各种场景应用详解
    目录前言一、常规使用与定义二、能不能自定义接收文件?三、能不能主动查询对方的沙盒?总结前言 有部分同学只要是上传或者下载,只要用到了文件,不管三七二十一写个 FileProvider...
    99+
    2024-04-02
  • 了解PHP trait DTO的应用场景
    介绍在PHP开发中,Trait(特性)是一种为类添加方法的方式,Trait提供了代码重用的机制,可以将一些可复用的代码块添加到多个类中。而DTO(数据传输对象)是一种设计模式,用于将数据在不同层之间传递,以及对数据进行封装和处理。PHP的T...
    99+
    2023-10-21
    应用场景 (Application Scenarios) PHP Trait (特性) DTO (数据传输对象)
  • 云主机的常见应用场景有哪些
    云主机的应用场景有:1.企业官网;2.高并发应用或网站;3.高I/O要求数据库;4.访问量波动剧烈的网站;具体分析如下:企业官网网站初始阶段访问量小,可以选择配置的云主机,随着网站发展,可以随时升级云主机配置,或者增加云主机实例数量,无需担...
    99+
    2024-04-02
  • Kafka及场景应用(中3)
    版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!)                https://blog.csdn.net/yinwenj...
    99+
    2023-01-31
    场景 Kafka
  • 深入解析Redis中常见的应用场景
    前言 Redis是一个key-value存储系统,现在在各种系统中的使用越来越多,大部分情况下是因为其高性能的特性,被当做缓存使用,这里介绍下Redis经常遇到的使用场景。下面话不多说了,来一起看看详细的介...
    99+
    2022-06-04
    场景 常见 Redis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作