Nginx基本介绍及conf文件的作用

文章目录

  • 前言
  • 一、Nginx基本介绍
    • 1.1 what is Nginx ?
    • 1.2 Nginx中的三个概念
    • 1.3 nginx安装
    • 1.4 运行nginx
  • 二、nginx配置文件conf
    • 2.1 conf文件组成部分
      • 2.1.1 全局块
      • 2.1.2 events块
      • 2.1.3 http块
  • 三、其他概念
    • 3.1 nginx惊群
    • 3.2 负载均衡
  • 总结


前言

本文将介绍nginx的基本概念和nginx.conf文件的构成。conf文件是利用nginx的重要入口。


一、Nginx基本介绍

1.1 what is Nginx ?

Nginx是高性能的HTTP和反向代理的web服务器,主要用途是用在网关。腾讯课堂、淘宝、163等网站均有用到。

1.2 Nginx中的三个概念

  1. 正向代理:访问端口9002的服务器,但通过代理服务器来访问(代理的是客户端)
  2. 反向代理:访问端口9002的服务器,但是可以由端口9000的服务代理分发(代理的是服务端)
  3. 负载均衡:基于反向代理,加上不同的weight来实现服务的高效分配。

image.png

1.3 nginx安装

  1. 下载nginx以及依赖软件
    image.png
    1. nginx的http模块使用pcre来解析正则表达式
    2. nginx使用zlib对http包的内容进行gzip
    3. 安装openssl库,让 nginx 支持 https(即在ssl协议上传输http)

通用的编译方法

make build && cd build && cmake ..

cmake -S . -B build

./configure && make && make install

1.4 运行nginx

安装完nginx后,会在/usr/local 下自动生成nginx文件夹。

cd /usr/local/nginx

# 启动nginx
./sbin/nginx -c conf/nginx.conf
# 暂停nginx
./sbin/nginx -s stop
# 重启nginx
./sbin/nginx -s reload

二、nginx配置文件conf

文件位置
image.png

nginx.conf


worker_processes 4;


events {
	worker_connections 1024;
}

http {

	# 负载均衡
	upstream backend {
		server 192.168.159.130:9002 weight=2; # 只要可以描述一个进程(server)的都可以,weight=2表示每两次切换到其他进程
		server 192.168.159.130:9003 weight=2;
	}

	server {
		listen 9000;
		location / {
#			root /root/install/nginx/html9000/;
			proxy_pass http://backend;
		}	
	}
	server {
		listen 9001;
		location / {
                        root /root/install/nginx/html9001/;
                }
	}
	server {
		listen 9002;
		location / {
                        root /root/install/share/nginx/html9002/;
                }
	}
	server {
		listen 9003;
		location / {
                        root /root/install/share/nginx/html9003/;
                }
	}

}

2.1 conf文件组成部分

nginx中定义了大量的关键字,比如worker_processes,nginx解析出这些关键字,然后调用指定的回调函数。
image.png

2.1.1 全局块

主要设置一些影响nginx 服务器整体运行的配置指令。

worker_processes 4

2.1.2 events块

events {
    worker_connections  1024;
}

主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

2.1.3 http块

Nginx 服务器配置中更改最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       10000;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

通常我们在添加功能时经常会修改该文件的内容,比如我们要添加一个关键字:

  1. 首先明确该关键字执行什么功能
  2. 比如是在返回响应文件时附带一个广告,那么我们在对应的location里添加这个关键字
  3. 编程时将对应的函数实现。
static ngx_command_t ngx_http_ad_filter_module_commands[] = {
	{
		ngx_string("ad"),
		NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_CONF_FLAG, // 可以放到conf的哪个位置
		ngx_conf_set_flag_slot,
		NGX_HTTP_LOC_CONF_OFFSET,
		offsetof(ngx_http_ad_filter_conf_t, enable), // 明确对应关键字的值在自定义结构体中的偏移量
		NULL
	},
	ngx_null_command // 结束标志
};

三、其他概念

3.1 nginx惊群

image.png

  1. listen在master进程,worker进程为master的子进程。
  2. 那么一个连接过来,4个worker都会被唤醒,只有一个进程会拿到连接(惊群效应)
    1. 分配一把钥匙,谁拿到钥匙谁处理连接

3.2 负载均衡

5种方法:

  1. 轮询算法:每个请求按时间顺序逐一分配
  2. 最少连接算法
  3. IP哈希算法:每个请求按访问的hash结果分配,访客固定访问一个后端服务器
  4. 指定轮询几率:weight指定访问次数
  5. fair

总结

本文介绍了nginx的基本概念,以及nginx.conf的构成。conf文件甚至可以实现简单的编程,在下一篇文章中将介绍。

参考链接:
https://github.com/0voice
https://blog.csdn.net/qq_40036754/article/details/102463099

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker打包SpringBoot项目

一、项目打成jar包 在进行docker打包之前,先确定一下,项目能够正常的打成JAR包,并且启动之后能够正常的访问。这一步看似是可有可无,但是能避免后期的一些无厘头问题。 二、Dockerfile 项目打包成功之后,需要编写Doc…

GitLab基础环境部署:Ubuntu 22.04.5系统在线安装GitLab 17.5.2实操手册

文章目录 GitLab基础环境部署:Ubuntu 22.04.5系统在线安装GitLab 17.5.2实操手册一、环境准备1.1 机器规划1.2 环境配置1.2.1 设置主机名1.2.2 停止和禁用防火墙1.2.3 更新系统 二、GitLab安装配置2.1 安装GitLab所需的依赖包2.2 添加GitLab存储库2.2.1 将GitLab存储…

【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解

前言 🌟🌟本期讲解关于HTMLCSSJavaScript的基础知识,小编带领大家简单过一遍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 …

6. 一分钟读懂“抽象工厂模式”

6.1 模式介绍 书接上文,工厂方法模式只能搞定单一产品族,遇到需要生产多个产品族时就歇菜了。于是,在需求的“花式鞭策”下,程序员们再次绷紧脑细胞,创造出了更强大的抽象工厂模式,让工厂一次性打包多个产品…

数仓技术hive与oracle对比(五)

附录说明 附录是对测试过程中涉及到的一些操作进行记录和解析。 oracle清除缓存 alter system flush shared_pool; 将使library cache和data dictionary cache以前保存的sql执行计划全部清空,但不会清空共享sql区或者共享pl/sql区里面缓存的最近被执行的条目。刷…

CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)

CEEMDAN-CPO-VMD二次分解(CEEMDAN冠豪猪优化算法CPO优化VMD) 目录 CEEMDAN-CPO-VMD二次分解(CEEMDAN冠豪猪优化算法CPO优化VMD)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 首先运用CEEMDAN对数据进行一次分解&#xff…

UG NX二次开发(Python)-UIStyler-选取点

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、设计一个UI界面3、创建长方体的代码4、需要引入的库5、测试验证1、前言 采用Python语言进行UG NX二次开发的资料比较少,我本来不是很认可采用Python进行二次开发的,但是近期有读者咨询…

后端-时间格式问题的解决办法

方法一:在需要的地方直接加 方法二:在全局写一个springmvc的消息转换器类

哪款云手机适合多开?常用云手机功能对比

在全球化和数字化时代,云手机以其独特的灵活性和高效性,成为多账号运营和数字营销的热门工具。云手机能够解决传统设备管理的诸多痛点,例如账号关联、硬件成本高等问题。本文将为您推荐多款优质云手机品牌,帮助您选择最适合的工具…

Qt 小项目 学生管理信息系统

主要是对数据库的增删查改的操作 登录/注册界面: 主页面: 添加信息: 删除信息: 删除第一行(支持多行删除) 需求分析: 用QT实现一个学生管理信息系统,数据库为MySQL 要求&#xf…

第三部分:进阶概念 7.数组与对象 --[JavaScript 新手村:开启编程之旅的第一步]

第三部分:进阶概念 7.数组与对象 --[JavaScript 新手村:开启编程之旅的第一步] 在 JavaScript 中,数组和对象是两种非常重要的数据结构,它们用于存储和组织数据。尽管它们都属于引用类型(即它们存储的是对数据的引用而…

Redis设计与实现读书笔记

目录 Redis设计与实现[^1]第一部分:数据结构与对象简单动态字符串SDS的基础定义与C字符串的差别常数获取长度杜绝缓冲区溢出减少修改字符串时带来的内存重分配次数二进制安全函数兼容 链表链表和链表节点的实现 字典字典的实现哈希表定义哈希表节点定义字典定义 哈希…

笔记04--零基础创建个人本地大模型知识库ollama+Dify

ollma安装 官网下载直接下一步下一步即可,没有魔法的朋友可以留言,文章中所用到的文件也给打包了,大家可以直接下载使用通过云盘下载使用。 链接: https://pan.baidu.com/s/12zF9MpQtg1bnMDAQayaSyg 提取码: n9rm 官网地址:http…

基于Springboot的校园交友网站设计与实现

1.1 管理信息系统概述 管理信息系统是计算机在信息管理领域的一种实用技术。通过运用管理科学、数学和计算机应用的原理及方法,在符合软件工程规范的原则下,形成一套完整的理论和方法体系。是一个以人、计算机和其他外部设备组成的可以进行信息的收集、…

Vue智慧商城项目

创建项目 vue组件库 — vant-ui(常用于移动端) Vant 2 - 轻量、可靠的移动端组件库 安装vant npm i vantlatest-v2 -S 引入组件 按需导入和全部导入 全部导入 整个组件库的所有组件都导进来,缺点是增加了代码包体积 main.js import…

灵途科技亮相2024世界传感器大会 分享光纤光源技术突破

12月1日至2日,2024世界传感器大会(WSS)在郑州国际会展中心隆重举办,泛自动驾驶领域光电感知专家灵途科技受邀参加“光纤传感器与激光雷达”分论坛,并在大会上带来《激光雷达用一体化光纤光源》专题演讲,同与…

【kotlin 】内联类(value class / inline class)

官方文档:https://kotlinlang.org/docs/inline-classes.html 注:inline class 关键字已经被废弃,取而代之的是value class。现在使用内联类需要定义类为value class,并使用JvmInline注解进行标注。 一、使用场景 有时候&#xff…

基于LSTM的A股股票价格预测系统(torch) :从数据获取到模型训练的完整实现

1. 项目简介 本文介绍了一个使用LSTM(长短期记忆网络)进行股票价格预测的完整系统。该系统使用Python实现,集成了数据获取、预处理、模型训练和预测等功能。 这个代码使用的是 LSTM (Long Short-Term Memory) 模型,这是一种特殊的…

【python自动化五】接口自动化基础--requests的使用

python的接口请求可以用requests库,这个介绍就不多说了,网上说得很详细。 接下来直接记录下如何使用(当然也不限于自动化的使用) 1.安装requests requests也需要安装一下 pip install requests2.requests请求 1.常用的请求方法…

【NLP 5、深度学习的基本原理】

目录 一、梯度下降算法 1.引例 —— 找极小值问题 目标: 方法: 2.梯度 例: 3.求解目标 为什么损失函数越小越好 4.梯度下降法 代码实现 5.细节问题 6.梯度爆炸和梯度消失 梯度爆炸 梯度消失 7.过拟合和欠拟合 欠拟合(Underfitting…