Web开发:web服务器-Nginx的基础介绍(含AI文稿)

news2024/11/16 7:30:04

目录

一、Nginx的功能:

二、正向代理和反向代理的区别

三、Nginx负载均衡的主要功能

四、nginx安装目录下的各个文件(夹)的作用:

五、常用命令


一、Nginx的功能:

1.反向代理:例如我有三台服务器,Nginx可以作为代理服务器,转发用户的请求给这三台服务器,起到集中管理和优化流量分发的作用。


2.负债均衡:存在高级负载均衡策略,比如说哪个服务器内存大,动态优先让此台服务器处理用户请求,在服务器故障时自动将流量转移到健康的服务器。


3.内存小,支持高并发访问


4.可以作为静态资源服务器、缓存服务器。

二、正向代理和反向代理的区别

1.正向代理:

例如VPN,你的网络环境中存在一个正向代理服务器(墙),你无法直接访问外网。你可以连VPN,将你的请求先发送给VPN服务器(正向代理),由VPN服务器代表你向目标服务器发出请求,获取到服务器的响应后再返回给你。在这个过程中,目标服务器只能看到VPN服务器的IP地址,无法直接识别你的真实IP地址和位置信息。

 2.反向代理

反向代理:例如Nginx中, 假设有一个网站部署了Nginx作为反向代理服务器。当客户端向这个网站发送请求时,请求会先到达Nginx服务器,Nginx根据预先配置的规则和负载均衡算法,将请求转发到后端的多个服务器(如应用服务器、数据库服务器等)。后端服务器处理完请求后,将结果返回给Nginx,再由Nginx将结果返回给客户端。对客户端来说,Nginx是唯一与之通信的服务器,客户端无法直接访问到后端的真实服务器。

3.总结:

流向不同:

    正向代理的流程是客户端 -> 正向代理 -> 目标服务器。

    反向代理的流程是客户端 -> 反向代理 -> 后端服务器。

目的不同:

    正向代理的目的是代理客户端去访问其他资源,通常用于访问控制、身份隐藏等。

    反向代理的目的是代理服务器来处理客户端的请求,通常用于负载均衡、缓存、安全保护等。

配置位置:

    正向代理配置在客户端或客户端访问路径中。

    反向代理配置在目标服务器和客户端之间,通常是在网络边界或应用服务器前。

三、Nginx负载均衡的主要功能

1. 轮询(Round-robin)
一种算法,它将每个请求按顺序分配到后端的不同服务器上,适用于每个服务器性能相近的场景。(假如三台服务器,那就123,123,123....)

nginx
upstream backend {
    server server1.example.com;
    server server2.example.com;
    server server3.example.com;
}

2. 加权轮询(Weighted Round-robin)
加权轮询允许为每个后端服务器分配一个权重值,权重值越高的服务器每轮接收到的请求越多。

nginx
upstream backend {
    server server1.example.com weight=3;
    server server2.example.com weight=2;
    server server3.example.com weight=1;
}

3. IP哈希(IP Hash)
基于客户端IP地址,将同一个客户端的所有请求发送到同一个后端服务器。这样可以确保同一客户端的会话保持在同一服务器上。(Session:维持登录状态)

nginx
upstream backend {
    ip_hash;
    server server1.example.com;
    server server2.example.com;
    server server3.example.com;
}

4. 动静分离(Static and Dynamic Content Separation)
将静态文件(如图片、CSS、JavaScript等)的请求和动态请求(如PHP、Python等脚本生成的页面)分发到不同的后端处理机制。通常,静态文件可以直接由Nginx处理并响应,而动态请求则转发给后端应用服务器处理。

nginx
server {
    listen 80;
    server_name example.com;

    location /static/ {
        root /var/www/;
    }

    location / {
        proxy_pass http://backend;
    }

    upstream backend {
        server backend-server1;
        server backend-server2;
    }
}

四、nginx安装目录下的各个文件(夹)的作用:


1.conf
2.contrib
3.docs
4.html
5.logs
6.temp
7.nginx.exe


1.conf:

这是 Nginx 的配置文件夹,包含了 Nginx 的各种配置文件。主要的配置文件是 nginx.conf,用于配置 Nginx 的全局设置、HTTP、服务器、位置等各种参数。

举例并且注释nginx.conf的内容:

# 全局配置
user nginx;  # 设置 Nginx 进程运行的用户为 nginx 用户
worker_processes auto;  # 自动设置工作进程数量,通常设置为 CPU 核心数
error_log /var/log/nginx/error.log;  # 错误日志文件的路径
pid /var/run/nginx.pid;  # Nginx 主进程的 PID 文件路径

# events 配置
events {
    worker_connections 1024;  # 每个工作进程允许的最大连接数
}

# HTTP 配置
http {
    include mime.types;  # 引入 MIME 类型配置文件
    default_type application/octet-stream;  # 默认的 MIME 类型
    sendfile on;  # 开启 sendfile 功能,提高文件传输效率
    keepalive_timeout 65;  # 客户端连接的超时时间
    gzip on;  # 开启 gzip 压缩

    # 定义后端服务器池
    upstream backend_servers {
        server backend1.example.com weight=5;  # 第一个后端服务器,权重为 5
        server backend2.example.com:8080 max_fails=3 fail_timeout=30s;  # 第二个后端服务器,指定端口和失败参数
        server unix:/tmp/backend3.sock;  # 第三个后端服务器,使用 Unix 域套接字
    }

    # 服务器配置
    server {
        listen 80;  # 监听 80 端口
        server_name example.com;  # 服务器的域名为 example.com

        location / {
            root /usr/share/nginx/html;  # 根目录位置
            index index.html index.htm;  # 默认首页文件
        }

        location /api/ {
            proxy_pass http://backend_servers;  # 请求转发到后端服务器池
            proxy_set_header Host $host;  # 设置请求头 Host
            proxy_set_header X-Real-IP $remote_addr;  # 设置请求头 X-Real-IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 设置请求头 X-Forwarded-For
        }

        error_page 500 502 503 504 /50x.html;  # 设置错误页的处理
        location = /50x.html {
            root /usr/share/nginx/html;  # 错误页文件的位置
        }
    }
}

2.contrib:

contrib 文件夹通常包含一些额外的模块或者补丁,这些模块可能不是 Nginx 官方正式支持的,但提供了一些额外的功能或者实验性质的特性。

3.docs:文档手册
4.html:Nginx 默认的网站根目录

当通过 HTTP 访问服务器时,如果没有配置其他的虚拟主机或者站点,Nginx 将会服务于这个目录下的文件。

5.logs:日志文件
6.temp:

temp 文件夹通常用于存放临时文件,例如上传文件时的临时存储位置。这些文件一般在使用完毕后会被删除或者清理。

7.nginx.exe:

nginx.exe 是 Nginx 的可执行文件(在 Windows 上)。它是启动和管理 Nginx 服务的主要程序,通过执行这个文件可以启动、停止或重新加载 Nginx 的配置。

五、常用命令

1.启动和停止(stop 参数会立即停止 Nginx 进程,而 quit 参数会等待当前请求处理完成后再停止。)

nginx
nginx -s stop

2.安全退出

nginx -s quit

3.重新加载配置文件(使新的配置生效)

nginx -s reload

4.查看Nginx进程

ps aux | grep nginx

(以上部分内容由AI生成,部分内容参考其他博主,如有错误恳请指正)
 

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

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

相关文章

Linux源码阅读笔记20-PCI设备驱动详解

PCI基础 PCI总线为高性能局部总线,主要解决外部设备之间以及外部设备与主机之间高速数据传输。在数字图形、图像等处理,以及告诉实时数据采集与处理等队数据传输速率要求高的应用中,采用PCI总线进行数据传输。PCI规范能够实现32位并行数据传…

我在高职教STM32——I2C通信入门(3)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…

STM32G070KBT6的RTC HAL库使用

*配置问题 首先使能时钟源,这里在时钟配置中选择LSI,为什么后面会说,然后使能Calender结构体,保证可以对RTC的年月日时分秒等进行写入和读取;alarmA和alarmB是闹钟,这里不用就Disable; Tam…

突破•指针六

听说这是目录哦 数组和指针笔试题解析🫧一维数组1🍕🍕🍕🍕🍕🍕🍕 字符数组1🍔🍔🍔🍔🍔🍔🍔2&#…

高并发下的分布式缓存 | Read-Through缓存模式

缓存系列文章链接如下: 高并发下的分布式缓存 | 缓存系统稳定性设计 高并发下的分布式缓存 | 设计和实现LRU缓存 高并发下的分布式缓存 | 设计和实现LFU缓存 高并发下的分布式缓存 | Cache-Aside缓存模式 Read-Through 模式的缓存操作 Read-Through模式的一个关键…

Scanner类、String类和StringBuffer类的相关使用

一、Scanner: 主要用于键盘录入的 构造方法: Scanner(InputStream source) 构造一个新的 Scanner ,产生从指定输入流扫描的值。 1、next()和nextLine()区别: String line sc.next(); // 不会接收特殊字符,比如空格回…

高效的编程学习方法和技巧

编程小白如何成为大神?大学新生的最佳入门攻略 编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱&…

基于单片机的智能空气净化系统

【摘 要】 设计了一种基于单片机的智能空气净化系统。通过传感器实时采集空气中 PM2.5 、甲醛等有害健康物质的浓度,将各项数据显示到液晶显示屏,当浓度超过设置的警戒值时,控制蜂鸣器发出警报。根据浓度大小控制空气净化器电机转速&#xf…

04.C++类和对象(中)

1.类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重…

Selenium + Python 自动化测试04(操作方法1)

上一篇我们讲述了webdriver 元素定位方法。我们对如何定位元素有了一个基本的认识。接着我们详细讲述对元素常见的一些基本操作方法,以便我们可以做很多功能操作的测试。这一篇侧重最基本的操作方面。 1、send_keys 方法 此方法类似于模拟键盘输入。还是以下面网站…

React项目中引用视频播出插件 easyPlayer.js 部署趟坑日志

目录 前文记录背景问题摸排:第一天前端打包失败?远程打包逻辑与本地打包逻辑不一致?远程入口页被篡改?再次排查本地webpack打包逻辑 问题摸排:第二天确认本地与远程打包一致排查远程nginx代理定位问题 index.html 的所…

AI10-PaddleDetection2.7安装测试

1、下载PaddleDetect-release-2.7开源项目 https://github.com/PaddlePaddle/PaddleDetection https://github.com/PaddlePaddle/PaddleDetection/releases PaddleDetection: PaddleDetection的目的是为工业界和学术界提供丰富、易用的目标检测模型 2、安装 环境要求 * Paddl…

[Qt][QWidget]详细讲解

目录 1.概述2.QWidget核心属性1.简介2.核心属性概览 3.QWidget常用属性1.enabled2.geometry1.是什么?2.Window Frame的影响3.相关API4.注意 3.windowTitile4.windowIcon5.windowOpacity6.cursor8.font9.toolTip10.focusPolicy11.styleSheet 1.概述 Widget是Qt中的核…

2024新版ChatGPT系统源码SparkAi系统,支持GPT4.0全模型,AI绘画,AI换脸+自定义智能体GPTs应用+AI视频+文档分析

一、文章序言 人工智能技术正迅猛发展,AI语言模型、AI绘画和AI视频已经在许多领域得到广泛应用。这些技术不仅在科技创新方面表现出色,还在艺术创作、内容生成和商业应用中展现出巨大的潜力。 SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能…

【Linux】系列入门摘抄笔记-4-查看文件内容命令cat/more/less/tail

cat 查看文件内容 cat [选项] [参数] cat 命令可以用来显示文本文件的内容(类似于 DOS 下的 type 命令),也可以把几个文件内容附加到另一个文件中,即连接合并文件。 tac 反向显示文件内容 tac [选项] [参数] 将文件全部内容从…

玩转Docker:Lsky pro图床+私有化部署大模型(Ollama+Openwebui)

最近搞了一个测试服务器,捣鼓了下一键搭建dnmp集成环境,然后还搭建了一个Lysk pro图床服务,后面又看到了开源大模型,也试着搭建了一下,中间出了一点小插曲。不过也算搭建成功了。做一个小结汇总。 1.前情回顾 DNMP:基…

探索list与iterator的区别及yield的用法

1 问题 探索list与iterator的区别探索yield的用法 2 方法 通过网上学习后了解到 List返回的类型是list,list只会查询一级缓存。list()中返回的List中每个对象都是原本的对象。查询的时候没遍历一个对象会产生一条sql;而iterator这个迭代器返回的类型是it…

Apache HTTPD 换行漏洞(CVE-2017-15715)

Vulhub - Docker-Compose file for vulnerability environment Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一…

sns.distplot()用法

seaborn.distplot(aNone, binsNone, histTrue,kdeTrue, rugFalse, fitNone, hist_kwsNone,kde_kwsNone, rug_kwsNone, fit_kwsNone,colorNone, verticalFalse, norm_histFalse,axlabelNone, labelNone, axNone, xNone)参数解释 a: 序列series、一维数组或者list,上…

经典街机游戏:拳皇97 for Mac(KOF97) 支持M1 中文移植版

游戏玩家一定会上手的游戏就是拳皇系列了吧,其中最经典的就是拳皇97,小编为大家提供的就是拳皇97mac版,熟悉的场景,熟悉的操作,原来Mac上打街机也可以这么爽,亲测拳皇97 for Mac 支持M1 Mac,喜欢…