五分钟快速学习Nginx

简介: 五分钟快速学习Nginx

u=3077560467,581170262&fm=253&fmt=auto&app=138&f=JPEG.webp

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器。它的配置非常简单,下面是我整理的 Nginx 知识点。

在阅读本文之前,建议先查看文章目录,然后再深入阅读,这样能快速形成对 Nginx 的认识。对于非复杂性的配置,以下内容足以满足日常工作需求,并可应对面试要求。

一、代理:

代理分为被代理角色目标角色

1、正向代理:

  • 客户端非常明确要访问的服务器地址;
  • 服务器只知道请求来自哪个服务器(不知道哪个客户端);
  • 正向代理屏蔽或者隐藏了真实客户端。

例如:当我们无法直接访问国外网站时,我们需要通过代理服务器(FQ)来访问,通过代理服务器去访问我们指定的网址。

2、反向代理:

  • 多个客户端向反向代理服务器发送请求,Nginx 根据一定的规则将请求分发到不同的服务器;
  • 客户端不清楚请求将被分发到哪台服务器,反向代理隐藏了服务器的信息。

总结:正向代理代理客户端的请求去访问目标服务器,目标服务器可能是一个反向服务器,反向代理了多台真实的服务器。

1667274211133.jpg

二、负载均衡

总说负载均衡,负载均衡是做什么用的?什么场景使用?

核心定义

负载均衡是用来分配客户端请求到多个服务器的机制,常用于解决高负载和提高系统可用性的问题。

  • 负载量:客户端发送的请求数量,也是负载量。
  • 均衡规则:反向代理服务器根据一定的规则将请求分发到不同的服务器上处理。
  • 负载均衡可分为硬件负载均衡(成本较高)和软件负载均衡(成本较低)。
  • 软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。

Nginx支持的复杂均衡调度算法

  1. weight 轮询(默认):按顺序将请求逐一分配到不同的服务器上,支持设置权重值来调整不同服务器上请求的分配率。

    • 若在使用过程中某一服务器宕机,nginx会自动将该服务器剔除队列,请求代理不受任何影响。

    • 特点:可以设置权重值(weight),用于调整不同的服务器上请求的分配率,权重越大,被分配到请求的几率越大(依据硬件配置调整)。

  2. ip_hash:根据客户端请求的 IP 的哈希值进行匹配,将具有相同 IP 哈希的客户端分配到指定的服务器。
  3. fair:动态根据服务器对请求的处理和响应完成时间进行均衡匹配,响应完成时间短且处理效率高的服务器分配请求的概率较高。
    • 该方法虽然结合了前两者的优点,但是nginx不支持fair算法,需要安装upstream_fair模块。
  4. url_hash:根据访问的 URL 的哈希结果分配请求,每个请求的 URL 将分配到指定的服务器。可以提高缓存效率,但需要安装 nginx 的 hash 软件包。

三、nginx配置

Nginx 通过配置 .conf 文件进行运行。

1、核心配置

核心功能包含反向代理、负载均衡和静态服务器3种。

  • main:全局信息配置。
  • events:工作模式配置。
  • http:HTTP 通信信息配置。
  • server:服务端访问信息配置。
  • location:访问路由配置。
  • upstream:负载均衡配置

u=3458937402,3869543500&fm=253&fmt=auto&app=138&f=JPEG.webp

2、配置文件

/usr/local/nginx/conf/vhost/admin.conf

尝试从上面nginx配置文件地址读取后内容如下:

server  {
    listen 80;  # 服务端口号
    client_max_body_size 100m;  # body请求数据大小
    index index.html;  # 项目地址
    root  /user/project/admin;  # 项目根目录地址
    # 路由配置
    location ~ /* {
        proxy_pass  http://127.0.0.1:3001;  # 代理服务地址
        proxy_redirect     off; 
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
    location ~ .*\.(gif|jpg|jpeg|png|swf)$ {
        expires      1d;
    }

    location ~ .*\.(js|css)?$ {
        expires      24h;
    }

    location ~ /.well-known {
        allow all;
    }

    location ~ /\. {
        deny all;
    }

    access_log  /user/logs/admin.log; # 记录日志
}

配置详情如下:

  • server:定义一个虚拟主机的配置块,一个 HTTP 中可以配置多个 server。
  • listen 80:设置服务端监听的端口号为 80。
  • client_max_body_size 100m:设置请求中允许的最大 body 大小为 100 MB。
  • index index.html:设置项目地址的默认文件为 index.html。
  • root /user/project/admin:指定项目根目录的路径。
  • location /:配置请求路径为 / 的 location 块。
    • proxy_pass http://127.0.0.1:3001:将请求代理到地址的后端服务器。
    • proxy_redirect off:关闭代理重定向。
    • proxy_set_header:设置代理请求头。
    • proxy_next_upstream:定义当后端服务器返回错误时,Nginx 将如何处理请求。
    • proxy_max_temp_file_size:设置允许的最大临时文件大小。
    • proxy_connect_timeoutproxy_send_timeoutproxy_read_timeout:定义代理连接、发送和读取超时时间。
    • proxy_buffer_sizeproxy_buffersproxy_busy_buffers_size:设置代理缓冲区的大小。
    • proxy_temp_file_write_size:设置代理临时文件的写入大小。
  • location ~ .*.(gif|jpg|jpeg|png|swf)$:配置请求以 .gif.jpg.jpeg.png.swf 结尾的文件的 location 块。
    • expires 1d:设置这些文件的过期时间为 1 天。
  • location ~ .*.(js|css)?$:配置请求以 .js.css 结尾的文件的 location 块。
    • expires 24h:设置这些文件的过期时间为 24 小时。
  • location ~ /.well-known:配置请求以 /.well-known 开头的路径的 location 块。
    • allow all:允许所有请求访问该路径。
  • location ~ /.:配置以 . 开头的路径的 location 块。
    • deny all:禁止所有请求访问该路径。
  • access_log /user/logs/admin.log:指定记录日志的路径为 /user/logs/admin.log

3、其他配置

除了以上的配置外,nginx还能配置以下配置:

  • server:配置虚拟主机,一个 HTTP 中可以配置多个 server。
  • server_name:指定 IP 地址或域名,多个配置之间用空格分隔。
  • root:主机内的根目录,用于指定当前主机中 web 项目的根目录。
  • index:访问 web 网站时的全局首页。
  • charset:设置网页的默认编码格式。
  • access_log:指定该虚拟主机服务器中的访问记录日志存放路径。
  • error_log:指定该虚拟主机服务器中访问错误日志的存放路径。
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
|
负载均衡 应用服务中间件 数据处理
Nginx学习使用
Nginx学习使用
45 0
|
7月前
|
应用服务中间件 网络安全 nginx
Nginx学习研究-Nginx 安装 SSL 配置 HTTPS
Nginx学习研究-Nginx 安装 SSL 配置 HTTPS
281 0
|
3月前
|
缓存 负载均衡 安全
Nginx 学习
Nginx 学习
30 0
|
5月前
|
应用服务中间件 nginx
【Nginx学习】—Nginx基本知识
【Nginx学习】—Nginx基本知识
|
5月前
|
应用服务中间件 Linux 网络安全
小白带你学习linux Nginx基本部署 (二十一)
小白带你学习linux Nginx基本部署 (二十一)
34 0
|
6月前
|
负载均衡 算法 应用服务中间件
Nginx学习使用
Nginx学习使用
47 1
|
6月前
|
应用服务中间件 API nginx
通过 docker 学习 nginx,附全部配置及 API 测试,使用 apifox 直接打开
本篇文章以前端的视角,介绍下 nginx 的常见配置,并通过 docker 的方式学习 nginx,这保证所有实例配置都能正常运行。
|
7月前
|
数据采集 缓存 负载均衡
Nginx 的学习与实战
Nginx是开源、高性能、高可靠的 Web 和反向代理服务器,能支持高达 50,000个并发连接数。Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。
51 2
|
7月前
|
应用服务中间件 Linux nginx
Nginx学习研究-Docker安装Nginx 实现反向代理
Nginx学习研究-Docker安装Nginx 实现反向代理
144 0
|
7月前
|
Java 应用服务中间件 nginx
Spring Boot 学习研究笔记(二十)-docker部署SpringBoot使用nginx配置域名
Spring Boot 学习研究笔记(二十)-docker部署SpringBoot使用nginx配置域名
211 0