Nginx

Nginx

什么是Nginx?

一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP等服务

特点:稳定性好,很少宕机、并发能力很强,可以支持5w个并发连接

作用

  • 反向代理

  • 负载均衡

  • 动静分离

反向代理

在了解反向代理之前,先说一下正向代理。

正向代理指客户端通过代理服务器来访问其他服务器资源的方式,正向代理代理的是客户端(用户)的请求,它充当客户端和目标服务器之间的中介。客户端知道代理的存在。就比如平时“翻墙”使用的VPN、梯子

用户客户端 → 正向代理服务器 → 目标网站→ 正向代理服务器 → 用户客户端

反向代理指服务器端设置的代理服务器,用于接受客户端的请求并将其转发到实际的后端服务器上。反向代理代理的是服务器端,它充当目标服务器和客户端之间的中介。客户端不知道反向代理的存在

用户客户端 → 反向代理服务器 → 后端服务器组(服务器1、服务器2、服务器3)→ 反向代理服务器 → 用户客户端

负载均衡

负载均衡就是将客户端发送的请求分配到多个服务器,以起到优化资源使用、提高系统性能的可靠性,主要有以下几种办法

  • 轮询:依次循环访问多台服务器

  • 加权轮询:请求优先访问权重比较重的服务器

  • 源地址哈希(iphash):根据客户端的 IP 地址计算哈希值,并将请求分配给特定的服务器,保证同一个ip哈希后打到固定服务器上

  • 最小连接数(least_conn):将请求分配给当前连接数最少的服务器

动静分离

Nginx 可以将一动态资源和静态资源分别交给不同的服务器,从而提高性能和可扩展性

配置Nginx

配置ngin.conf 文件

conf文件主要分三个部分

  • 全局配置

  • Events 配置

  • HTTP配置

    • HTTP配置

    • HTTPS配置

    • 负载均衡

    • Server配置

其中

全局设置:包括用户、工作进程数量、PID 文件路径等。

HTTP 块:配置 HTTP 服务器的全局设置,包括 MIME 类型、日志、缓存、压缩等。

Server 块:定义虚拟主机的配置,如域名、根目录、请求处理方式等。

Events 块:配置事件处理相关的设置,如连接数限制和事件模型。

这里我们来演示一下如何配置负载均衡和反向代理

http {
    # 定义上游服务器组
    upstream my_backend {
        server 127.0.0.1:8080 weight=1;
        server 127.0.0.1:8081 weight=2;
        server 127.0.0.1:8082 weight=3;
    }
​
    server {
        listen 80;
        server_name example.com;
​
        location / {
            proxy_pass http://my_backend;  # 反向代理到上游服务器组
    ...
        }
    }
}

解释:这里我们定义了反向代理url:Example Domain,和反向代理后的三台服务器:127.0.0.1:8080(比重为1/6)、127.0.0.1:8081(比重为2/6)、127.0.0.1:8082(比重为3/6),这样当我们访问Example Domain时,Nginx会根据权重分别将访问发送到三台服务器中

为什么Nginx性能这么高?

  1. 异步非阻塞

  2. 它跟Redis一样,使用I/O多路复用,它分为一个主进程,多个工作进程,每个工作进程可以处理多个请求,每进来一个请求,会有一个worker进程去处理,属于网络io密集型。异步非阻塞事件处理机制:运用了epoll模型,可处理2-3万并发连接数;

  3. 用一个线程进行监听,谁有请求,就处理谁的回调方法,这样也避免了多线程直接上下文切换。

  4. 它是用一个线程进行监听多个输入、输出流,谁有数据去处理谁,它并不是为每个输入、输出流创建独立的线程,去处理任务,一个线程可以监听多个描述符(socket)。

怎么配置Nginx配置高可用性?

Nginx本身挂掉的概率就非常小,如果真的不放心,可以采取以下策略

  1. 在小项目中,可以选择将一台Nginx转发到多台Nginx上

  2. 在大的项目中,可以准备两台Nginx,两台安装Keepalived服务,配置相应的Keepalived.conf文件,当一台Nginx宕机后,可以通过虚拟IP来自动切换到另一台服务器上

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值